|
![]() |
#1 |
Участник
|
Рискну предложить свой вариант на основе виндовых функций
__________________
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). |
![]() |
#2 |
Участник
|
|
|
![]() |
#3 |
Участник
|
Цитата:
странно в 2009-й функция Utf2Ansi() валится с ошибкой "Метод вызван с недопустимыми параметрами" на вызове
X++: buf.string(0, _utf8); |
|
![]() |
#4 |
Участник
|
Еще - в 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. |
|
![]() |
#5 |
MCITP
|
Цитата:
Сообщение от 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 работает корректно, но хотелось бы на сервере добиться работы. Заранее спасибо. |
|
![]() |
#6 |
Молодой, подающий надежды
|
Быть может так получится:
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). |
![]() |
#7 |
Участник
|
Класс TextIo позволяет задавать кодировку, используется так же как AsciiIo
http://msdn.microsoft.com/en-us/libr...=ax.50%29.aspx |
|
|
За это сообщение автора поблагодарили: someOne (5). |
![]() |
#8 |
MCITP
|
Цитата:
Сообщение от 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". |
|
![]() |
#9 |
Участник
|
|
|
![]() |
#10 |
Участник
|
У меня на тройке этот вариант не работает - в UTF8 выводятся кракозябры:
ABCDEFGabcdefgАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдежзийклмнопрстуфхцчшщьыъэюя123 ABCDEFGabcdefgАБВГДЕЖЗРЙКЛМНОПРСТУФХЦЧШЩЬЫЪРЮЯабвгдежзийклмнопрстуфхцчшщьыъэюя123 ABCDEFGabcdefgАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдежзийклмнопрстуфхцчшщьыъэюя123 |
|
![]() |
#11 |
Участник
|
Спасибо! Но есть одно но, класс плохо себя ведет со скобочками и цивфрами после 4-ки, а точнее добавляет после этих символов кряказябры... Как быть в таких случаях?
Пример: На входе ABCDEFGabcdefgАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдежзийклмнопрстуфхцчшщьыъэюя123( Ны выходе ABCDEFGabcdefgАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮЯабвгдежзийклмнопрстуфхцчшщьыъэюя123(Џ Последний раз редактировалось freezok; 20.06.2012 в 17:53. |
|
![]() |
#12 |
Участник
|
Решил проблему добавлением пустоты в конце строки(проблема была толко если символ скобка или цифры 4-9 были в конце строки)
|
|