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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 23.01.2003, 13:54   #1  
Михаил Андреев is offline
Михаил Андреев
Участник
Компания АМАНД
Лучший по профессии 2009
 
1,296 / 239 (10) ++++++
Регистрация: 09.11.2001
Адрес: Химки, Московская область
Кто умеет делать запись файлов в кодировке DOS
Пытаюсь вывести в файл из Аксапты данные в кодировке DOS.
Вот фрагмент кода:

static void MA_VendTable_Export(Args _args)
{
VendTable VendTable;
AsciiIo vt;
container c;
;
vt = new AsciiIo("c:\\temp\\VendTable.txt", "W");
vt.writeRaw("Проверка");
vt.writeExp([1]);
vt.writeRaw(ansi2ascii("Проверка"));
vt.writeExp([2]);
vt.writeRaw(ascii2ansi("Проверка"));
vt.writeExp([3]);

В итоге выводится в чем угодно, кроме кодироки DOS В чем проблема?
__________________
Михаил Андреев
https://www.amand.ru
Старый 23.01.2003, 13:58   #2  
Андре is offline
Андре
Moderator
Сотрудники компании GMCS
 
2,375 / 464 (20) +++++++
Регистрация: 03.12.2001
Честно говоря в Аксапте это дело не пробовал. Но уж если очень надо, а по другому никак не получится можно сделать так: импортировать функцию OemToChar и использовать ее.
Старый 24.01.2003, 10:39   #3  
Михаил Андреев is offline
Михаил Андреев
Участник
Компания АМАНД
Лучший по профессии 2009
 
1,296 / 239 (10) ++++++
Регистрация: 09.11.2001
Адрес: Химки, Московская область
Я уже решил эту проблему запуском внешнего перекодировщика. Но это же неэстетично
__________________
Михаил Андреев
https://www.amand.ru
Старый 24.01.2003, 10:50   #4  
Wamr is offline
Wamr
----------------
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
 
1,737 / 858 (32) +++++++
Регистрация: 15.01.2002
Адрес: Москва
Записей в блоге: 7
"неэстетично" - это то что такой ф-ции в Аксапте нет
А вот вариант предложенный Андре очень даже приятен. Сделать свою ф-цию в Global и юзать ее как стандартную.
PHP код:
client static str ChatToOEM(str strSource)
//Преобразование строки в кодировку OEM
    
DLL         _winApiDLL = new DLL('USER32');
    
DLLFunction _CharToOEM  = new DLLFunction(_winApiDLL'CharToOemA');
    
Binary       bSource    = new Binary(strSource);
    
str          oemstr;
    ;
    
_CharToOEM.returns(ExtTypes:: DWORD);
    
_CharToOEM.arg(ExtTypes::POINTER,
                  
ExtTypes::POINTER);
    
_CharToOEM.call(bSourcebSource);

    
oemstr bSource.string(0);

    return 
oemstr;

(c) xroad
Старый 24.01.2003, 11:03   #5  
Михаил Андреев is offline
Михаил Андреев
Участник
Компания АМАНД
Лучший по профессии 2009
 
1,296 / 239 (10) ++++++
Регистрация: 09.11.2001
Адрес: Химки, Московская область
Спасибо, работает
__________________
Михаил Андреев
https://www.amand.ru
Старый 11.08.2003, 11:52   #6  
Field is offline
Field
Участник
 
25 / 10 (1) +
Регистрация: 04.06.2003
Адрес: г. Новосибирск
Попробовал функцию, получилось. Только поясните, пожалуйста, почему 'CharToOemA'? В MSDN описана функция CharToOem.
Мне потребовалось использовать функцию OemToChar, и напрямую не пошло.
Старый 11.08.2003, 12:21   #7  
sash_xp is offline
sash_xp
Участник
Аватар для sash_xp
 
274 / 9 (1) +
Регистрация: 18.07.2003
Адрес: Москва
Если не ошибаюсь, все дело в существовании разных версий ф-ций Win32 API. В одних функциях поодерживается ANSI (Win9x), в других Unicode (WinNT).
У вас похоже стоит Windows 9x
__________________
Александр Игнатьев
Старый 11.08.2003, 13:01   #8  
Field is offline
Field
Участник
 
25 / 10 (1) +
Регистрация: 04.06.2003
Адрес: г. Новосибирск
Нет, у меня Windows 2000 Pro
Старый 11.08.2003, 13:08   #9  
sash_xp is offline
sash_xp
Участник
Аватар для sash_xp
 
274 / 9 (1) +
Регистрация: 18.07.2003
Адрес: Москва
Похоже я сел...
Приду домой, посмотрю, и завтра дам более подробный ответ. А то что-то память подводит.
Хотя нет есть идея. Ф-ции с поддержкой ANSI оканчиваются на A, а с пооддержкой Unicode на W. Но я не подумал, что A-функции можно использовать и в WinNT
__________________
Александр Игнатьев
Старый 12.08.2003, 11:45   #10  
sash_xp is offline
sash_xp
Участник
Аватар для sash_xp
 
274 / 9 (1) +
Регистрация: 18.07.2003
Адрес: Москва
При программировании под WinNT, если мы желаем использовать наш результат компиляюции под WinNT мы объявляем макрос Unicode, ктоторый определяется так
PHP код:
#ifdef Unicode
#define APIFunction APIFunctionW
#else
#define APIFunction APIFunctionA
#endif 
Т.о. в нашей проге мы используем APIFunction и перед компиляцией, в зависимости от объявления макроса Unicode APIFunction преобразуется в APIFunctionW или в APIFunctionA.
Если прога при выполнении на WinNT вызывает APIFunctionA, то вызывается ф-ция-заглушка, которая преобразует строки в Unicode и вызывает APIFunctionW.
Если при выполнении на Win9x прога вызывает APIFunctionW, то ... прога вешается
Надеюсь я ответил на ваш вопрос , и почему я ошибся в определении системы.
__________________
Александр Игнатьев
Старый 13.08.2003, 12:04   #11  
Field is offline
Field
Участник
 
25 / 10 (1) +
Регистрация: 04.06.2003
Адрес: г. Новосибирск
Да, спасибо
Старый 10.09.2003, 17:44   #12  
Polar is offline
Polar
Участник
Аватар для Polar
 
281 / 74 (3) ++++
Регистрация: 28.07.2003
Адрес: Ростов-на-Дону
Axapta 3.0 SP1

Класса Asciilo не нашел
Это может быть из-за лицензионных соглашений
в документации он присутствует.

А вообще, надо записать в текстовый файл некоторую информацию.
Ее считает другая программа , обработает, потом запишет также в текстовый файл.
Аксапта считает результат.
__________________
Удачи!
Старый 10.09.2003, 17:45   #13  
Polar is offline
Polar
Участник
Аватар для Polar
 
281 / 74 (3) ++++
Регистрация: 28.07.2003
Адрес: Ростов-на-Дону
после : это может быть из-за лицензионных соглашений
должен стоять вопросительный знак
__________________
Удачи!
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Создание текстового файла в кодировке DOS Pismarkina DAX: Программирование 5 18.06.2012 14:57
Файлы XML, CSV, HTML в кодировке Unicode EVGL DAX: База знаний и проекты 3 16.01.2009 14:23
Не корректно сохраняет запись в inventTable Starling DAX: Программирование 8 31.03.2008 15:30
Очень просто: создать новую запись в таблице Hobo DAX: Программирование 20 11.07.2006 13:02
Ошибка при импорте демоданных (Axapta 3.0 CIS SP1) KocDm DAX: Администрирование 2 11.08.2005 12:04
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

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

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

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 14:08.