AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 02.12.2005, 14:12   #1  
AndyD is offline
AndyD
Участник
КОРУС Консалтинг
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
 
2,560 / 2476 (88) +++++++++
Регистрация: 20.08.2005
Рискну предложить свой вариант на основе виндовых функций
Вложения
Тип файла: zip UTF8.zip (1.3 Кб, 967 просмотров)
__________________
Axapta v.3.0 sp5 kr2
За это сообщение автора поблагодарили: slava (1), Logger (5), Ace of Database (5), DreamCreator (3), kvg6 (3), gl00mie (5), ivas (1), xenikk (1), Just_smile (1), Vasil (1), freezok (1).
Старый 24.11.2010, 18:11   #2  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,891 / 3165 (113) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от AndyD Посмотреть сообщение
Рискну предложить свой вариант на основе виндовых функций
спасибо за код.

странно в 2009-й функция Utf2Ansi() валится с ошибкой "Метод вызван с недопустимыми параметрами" на вызове

X++:
buf.string(0, _utf8);
Старый 24.11.2010, 18:15   #3  
someOne is offline
someOne
Участник
Аватар для someOne
 
173 / 423 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Цитата:
странно в 2009-й функция Utf2Ansi() валится с ошибкой "Метод вызван с недопустимыми параметрами" на вызове

X++:
buf.string(0, _utf8);
Может быть поэтому ? Ошибка при работе с binary в Ax2009
Старый 24.11.2010, 19:29   #4  
someOne is offline
someOne
Участник
Аватар для someOne
 
173 / 423 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Еще - в Ax2009, наверное, лучше делать так (через NET):
X++:
static void Job31(Args _args)
{
    System.IO.StreamWriter file;
    ;
    file = new System.IO.StreamWriter("C:\\Test.txt", true, System.Text.Encoding::get_UTF8());
    file.WriteLine("Привет из Axapta");
    file.Close();
}
Гарантировано не будет проблем, например, при запуске на стороне сервера.
Замечал, что не все низкоуровневые api функции работают на стороне сервера.
Может проблема в том что операционная система сервера 64 bit ?
Наверное поэтому все серверные вызовы api (класс WinApiServer) переделаны на NET в axapta 2009.
Старый 01.08.2011, 09:35   #5  
GBH is offline
GBH
MCITP
Аватар для GBH
MCP
MCBMSS
Ex AND Project
 
140 / 28 (1) +++
Регистрация: 28.06.2007
Цитата:
Сообщение от someOne Посмотреть сообщение
Еще - в Ax2009, наверное, лучше делать так (через NET):
X++:
static void Job31(Args _args)
{
    System.IO.StreamWriter file;
    ;
    file = new System.IO.StreamWriter("C:\\Test.txt", true, System.Text.Encoding::get_UTF8());
    file.WriteLine("Привет из Axapta");
    file.Close();
}
Гарантировано не будет проблем, например, при запуске на стороне сервера.
Замечал, что не все низкоуровневые api функции работают на стороне сервера.
Может проблема в том что операционная система сервера 64 bit ?
Наверное поэтому все серверные вызовы api (класс WinApiServer) переделаны на NET в axapta 2009.
А как добиться работы данного кода на сервере?
У меня ругается на InteropPermission.
Пытался применить,то что написано здесь, но не помогает.
http://msdn.microsoft.com/en-us/library/bb190039.aspx
Видимо руки кривые.


static client работает корректно, но хотелось бы на сервере добиться работы.
Заранее спасибо.
Старый 01.08.2011, 10:08   #6  
pedrozzz is offline
pedrozzz
Молодой, подающий надежды
Аватар для pedrozzz
MCBMSS
Лучший по профессии 2015
 
164 / 218 (8) ++++++
Регистрация: 18.02.2010
Адрес: Краснодар
Цитата:
Сообщение от GBH Посмотреть сообщение
А как добиться работы данного кода на сервере?
Быть может так получится:
X++:
static void Job31(Args _args)
{
    FileName                fileName      = @'C:\Test.txt';
    Set                     permissionSet = new set(Types::Class);
    System.Text.Encoding    encoding;
    System.IO.StreamWriter  file;
    #File
    ;

    permissionSet.add(new FileIOPermission(fileName, #io_write));
    permissionSet.add(new InteropPermission(InteropKind::ClrInterop));

    CodeAccessPermission::assertMultiple(permissionSet);

    try
    {
        encoding = System.Text.Encoding::get_UTF8();
        file     = new System.IO.StreamWriter(fileName, true, encoding);

        file.WriteLine("Привет из Axapta на сервере");

        file.Close();
    }
    catch
    {
        error(AifUtil::getClrErrorMessage());
    }

    CodeAccessPermission::revertAssert();
}
За это сообщение автора поблагодарили: Logger (3).
Старый 01.08.2011, 23:22   #7  
jonny is offline
jonny
Участник
Аватар для jonny
Самостоятельные клиенты AX
 
217 / 124 (5) +++++
Регистрация: 10.02.2006
Адрес: СПб-Екб-?
Класс TextIo позволяет задавать кодировку, используется так же как AsciiIo
http://msdn.microsoft.com/en-us/libr...=ax.50%29.aspx
За это сообщение автора поблагодарили: someOne (5).
Старый 02.08.2011, 08:36   #8  
GBH is offline
GBH
MCITP
Аватар для GBH
MCP
MCBMSS
Ex AND Project
 
140 / 28 (1) +++
Регистрация: 28.06.2007
Цитата:
Сообщение от pedrozzz Посмотреть сообщение
Быть может так получится:
X++:
static void Job31(Args _args)
{
    FileName                fileName      = @'C:\Test.txt';
    Set                     permissionSet = new set(Types::Class);
    System.Text.Encoding    encoding;
    System.IO.StreamWriter  file;
    #File
    ;

    permissionSet.add(new FileIOPermission(fileName, #io_write));
    permissionSet.add(new InteropPermission(InteropKind::ClrInterop));

    CodeAccessPermission::assertMultiple(permissionSet);

    try
    {
        encoding = System.Text.Encoding::get_UTF8();
        file     = new System.IO.StreamWriter(fileName, true, encoding);

        file.WriteLine("Привет из Axapta на сервере");

        file.Close();
    }
    catch
    {
        error(AifUtil::getClrErrorMessage());
    }

    CodeAccessPermission::revertAssert();
}
Спасибо за ответ!
К сожалению, всё также как и у меня.

X++:
 (08:35:07)
 "CLRObject"    
      "C:\Test.txt".
Старый 02.08.2011, 12:36   #9  
someOne is offline
someOne
Участник
Аватар для someOne
 
173 / 423 (15) +++++++
Регистрация: 11.12.2008
Адрес: Москва
Цитата:
Сообщение от GBH Посмотреть сообщение
А как добиться работы данного кода на сервере?
У меня ругается на InteropPermission.
Для избежания этой ошибки в начале метода достаточно вставить

X++:
new InteropPermission(InteropKind::ClrInterop).assert();
Обсуждалось неоднократно...
Старый 18.01.2012, 12:01   #10  
Just_smile is offline
Just_smile
Участник
Axapta Retail User
 
41 / 29 (1) +++
Регистрация: 28.10.2008
Цитата:
Сообщение от AndyD Посмотреть сообщение
Рискну предложить свой вариант на основе виндовых функций
У меня на тройке этот вариант не работает - в UTF8 выводятся кракозябры:
ABCDEFGabcdefgАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдежзийклмнопрстуфхцчшщьыъэюя123

ABCDEFGabcdefgАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдежзийклмнопрстуфхцчшщьыъэюя123

ABCDEFGabcdefgАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдежзийклмнопрстуфхцчшщьыъэюя123
Старый 20.06.2012, 17:50   #11  
freezok is offline
freezok
Участник
 
4 / 10 (1) +
Регистрация: 18.06.2012
Цитата:
Сообщение от AndyD Посмотреть сообщение
Рискну предложить свой вариант на основе виндовых функций
Спасибо! Но есть одно но, класс плохо себя ведет со скобочками и цивфрами после 4-ки, а точнее добавляет после этих символов кряказябры... Как быть в таких случаях?
Пример:
На входе
ABCDEFGabcdefgАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдежзийклмнопрстуфхцчшщьыъэюя123(
Ны выходе
ABCDEFGabcdefgАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдежзийклмнопрстуфхцчшщьыъэюя123(Џ

Последний раз редактировалось freezok; 20.06.2012 в 17:53.
Старый 21.06.2012, 09:36   #12  
freezok is offline
freezok
Участник
 
4 / 10 (1) +
Регистрация: 18.06.2012
Решил проблему добавлением пустоты в конце строки(проблема была толко если символ скобка или цифры 4-9 были в конце строки)
Теги
.net, ansi, ascii, cp866, utf8, законченный пример, полезное

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Создание текстового файла в кодировке DOS Pismarkina DAX: Программирование 5 18.06.2012 14:57
Файлы XML, CSV, HTML в кодировке Unicode EVGL DAX: База знаний и проекты 3 16.01.2009 14:23
Вывод отчета в файл в пакетном режиме Egor_bl DAX: Программирование 16 09.10.2006 19:10
Отчет записать сразу как RTF файл st_msav DAX: Программирование 2 17.01.2006 18:52
считать/записать данные в файл Valia DAX: Программирование 7 19.11.2003 11:59

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 13:50.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.