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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 13.07.2006, 10:34   #1  
MikeR is offline
MikeR
MCT
Аватар для MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1,628 / 627 (24) +++++++
Регистрация: 28.11.2005
Адрес: просто землянин
Выгрузка в dbf с перекодировкой
Собственно сабж. Написал выгрузку в dbf. Проблем нет. Но при импорте в ЕГАИС не поддерживается кодировка DOS. Написал перекодировку из DOS в Windows и вот тут внимание самое интересное. Нижний регистр перекодируется без проблем это символы "абвгдежзикл..." а вот с верхним регистром проблемы "АБВГДЕЖЗ...". Коды верхнего регистра в ASCI отсутствуют полностью, только можно найти жалкие остатки типа 134 - Е, 135 - Ш, 153 - Т. Собственно недостоющие можно добыть из латиницы, но как быть с "Я, Ж.."?
Старый 13.07.2006, 11:00   #2  
diessever is offline
diessever
Участник
 
19 / 11 (1) +
Регистрация: 27.11.2002
Адрес: г.Пенза
Могу предположить что при выгрузке вы используете драйвер dBase, если заменить драйвер на FoxPrо-шный то выгрузка будет в кодировке WIN и ничего перекодировать собственно не нужно. Поищите VFPODBC и установите если отсутствует.
Старый 13.07.2006, 11:00   #3  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Цитата:
Сообщение от MikeR
Коды верхнего регистра в ASCI отсутствуют полностью, только можно найти жалкие остатки типа 134 - Е, 135 - Ш, 153 - Т.
Что-то Вы явно путаете... И в ANSI и в OEM кодировках русский алфавит представлен полностью. Для конвертации Win -> DOS в Аксапте можно использовать метод:
WinApi::CharToOemBuff(_text)

Обратного, к сожалению, нет, но его несложно создать по аналогии.
__________________
Старый 13.07.2006, 11:07   #4  
MikeR is offline
MikeR
MCT
Аватар для MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1,628 / 627 (24) +++++++
Регистрация: 28.11.2005
Адрес: просто землянин
Спасибо уже ознакомился с предложением о написании WinApi::OemToChar(_text), но только где взять библиотеку? Перебором подобрать не получилось.
Ruff тогда опубликуйте коды и все навсего.
Старый 13.07.2006, 11:10   #5  
MikeR is offline
MikeR
MCT
Аватар для MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1,628 / 627 (24) +++++++
Регистрация: 28.11.2005
Адрес: просто землянин
Вот предлагаю ознакомится с существующими http://www.tspu.edu.ru/ebooks/stakhin/2.3.htm
далее с 240 по 262 идет нижний регистр между ними куча мне не нужных символов. А коды верхнего я уже опубликовал
Старый 13.07.2006, 11:16   #6  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,308 / 3540 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Оно?
X++:
static str oemToChar(str _text)
{
    DLL             dll         = new DLL("user32.dll");
    DLLFunction     dllFunction = new DLLFunction(dll, "OemToCharA");
    Binary          result      = new Binary(strlen(_text) + 1);
    ;
    dllFunction.returns(ExtTypes::DWord);
    dllFunction.arg(ExtTypes::String, ExtTypes::Pointer);

    dllFunction.call(_text, result);
    return result.string(0);
}
2Ruff: Где-где ваш метод? Чего-то не нашел или не там искал? (Ax 3.0 SP3 CU1)
Все, нашел dis слой, с комментариями от valu, класс WinApi
__________________
Возможно сделать все. Вопрос времени

Последний раз редактировалось sukhanchik; 13.07.2006 в 11:20.
Старый 13.07.2006, 11:33   #7  
MikeR is offline
MikeR
MCT
Аватар для MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1,628 / 627 (24) +++++++
Регистрация: 28.11.2005
Адрес: просто землянин
Thanks sukhanchik, но получается при переводе WinApi:emToChar("АБВГДЕЖЗИЙКЛМНОПРСТ")
в 6L+T+-+ііLЈіTі=+ііTT
Хотя интересный подход не додумался бы "OemToCharA" имеется в виду последняя А
Старый 13.07.2006, 12:32   #8  
MikeR is offline
MikeR
MCT
Аватар для MikeR
MCBMSS
Лучший по профессии 2015
Лучший по профессии 2014
 
1,628 / 627 (24) +++++++
Регистрация: 28.11.2005
Адрес: просто землянин
Совет будущим поколениям
Дело оказалось в следующем
Класс, формирующий файл dbf перекодировал из Windows в Dos, уже потом перекодировать без потерь не получится
Старый 14.07.2006, 10:15   #9  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Цитата:
Сообщение от MikeR
Ruff тогда опубликуйте коды и все навсего.
Вот, пожалуйста - OEM для 866 (русской) кодовой страницы:
http://ascii.org.ru/
Верхний регистр идет с кода 128 по код 159 непрерывно. Нижний прерывается на псевдографику...
Цитата:
Сообщение от MikeR
...далее с 240 по 262 идет нижний регистр...
Если мы говорим об одном и том же (о кодах ASCII), то они однобайтовые, то есть 255 максимум. Откуда 262?

Последний раз редактировалось Ruff; 14.07.2006 в 10:23.
Теги
ascii, dbf, dos, кодировка, таблица символов

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Выгрузка из ODBC naf DAX: Программирование 9 25.12.2008 19:07
Выгрузка числовых данных в dbf файл kenzo DAX: Программирование 2 12.04.2006 16:01
почти DBF Gorlum DAX: Программирование 3 17.03.2006 12:52
И опять DBF.... edd DAX: Программирование 20 17.02.2003 13:18
Достать данные из DBF в форму edd DAX: Программирование 29 06.02.2003 21:01

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

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

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