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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 22.04.2005, 16:55   #1  
serp is offline
serp
Участник
 
1 / 10 (1) +
Регистрация: 22.04.2005
Кто-нибуть в курсе - вообще возможно ли сделать выгрузку из навижена в тектовый файл в виндусовой кодировке?
Или 866 кодовая страница незыблема и изменению не подается?
Старый 22.04.2005, 17:08   #2  
alextus_imported is offline
alextus_imported
Участник
 
40 / 10 (1) +
Регистрация: 17.09.2004
я такую функцию писал,
а вообще если длина строки мала можно же после выгрузки внешней утилитой пользоваться с помощью SHELL типа doswin.exe filename866.txt filename1251.txt

DosToWin(dosString : Text[250]) winString : Text[250]
win[128]:=192;//A
win[129]:=193;//
win[130]:=194;//
win[131]:=195;//
win[132]:=196;//
win[133]:=197;//
win[134]:=198;//
win[135]:=199;//
win[136]:=200;//
win[137]:=201;//
win[138]:=202;//
win[139]:=203;//
win[140]:=204;//
win[141]:=205;//
win[142]:=206;//
win[143]:=207;//
win[144]:=208;//
win[145]:=209;//
win[146]:=210;//
win[147]:=211;//
win[148]:=212;//
win[149]:=213;//
win[150]:=214;//
win[151]:=215;//
win[152]:=216;//
win[153]:=217;//
win[154]:=218;//
win[155]:=219;//
win[156]:=220;//
win[157]:=221;//
win[158]:=222;//
win[159]:=223;//Я
win[160]:=224;//а
win[161]:=225;//
win[162]:=226;//
win[163]:=227;//
win[164]:=228;//
win[165]:=229;//
win[166]:=230;//
win[167]:=231;//
win[168]:=232;//
win[169]:=233;//
win[170]:=234;//
win[171]:=235;//
win[172]:=236;//
win[173]:=237;//
win[174]:=238;//
win[175]:=239;//
win[224]:=240;//
win[225]:=241;//
win[226]:=242;//
win[227]:=243;//
win[228]:=244;//
win[229]:=245;//
win[230]:=246;//
win[231]:=247;//
win[232]:=248;//
win[233]:=249;//
win[234]:=250;//
win[235]:=251;//
win[236]:=252;//
win[237]:=253;//
win[238]:=254;//
win[239]:=255;//я
win[240]:=168;//Ё
win[241]:=184;//ё

FOR i :=1 TO STRLEN(dosString)DO
BEGIN
ch:=dosString[i];
IF ch < 128 THEN
winString[i] := ch
ELSE BEGIN
winString[i] := win[ch];
END;
END;
Старый 22.04.2005, 17:18   #3  
Шрэк is offline
Шрэк
Участник
Аватар для Шрэк
 
645 / 24 (2) +++
Регистрация: 09.02.2004
Адрес: Москва
http://www.axforum.ru/forums/showthread.ph...63550#post63550
Последние два сообщения в этой ветке.
__________________
MBS Certified Master in Navision Developer
Старый 22.04.2005, 17:28   #4  
alextus_imported is offline
alextus_imported
Участник
 
40 / 10 (1) +
Регистрация: 17.09.2004
В нашей версии (2.60) такой функции нет...
Старый 22.04.2005, 17:31   #5  
alextus_imported is offline
alextus_imported
Участник
 
40 / 10 (1) +
Регистрация: 17.09.2004
Да в 3.60 есть...
Старый 22.04.2005, 17:37   #6  
Kirvisniemi is offline
Kirvisniemi
Moderator
 
342 / 13 (1) ++
Регистрация: 21.12.2004
Зачем? Есть кодюнит 12400

Код:
Dos2Win(DosText:Text[250]) WinText : Text[250];

Pos := 0;
WinText := '';
REPEAT
  Pos+=1;
  OneChar := DosText[Pos];
  CASE(OneChar) OF
     'А'..'п': OneChar := OneChar + 64;
     'р'..'я': OneChar := OneChar + 16;
     'Ё': OneChar := 168;
     'ё': OneChar := 184;
  END;
  WinText := WinText + FORMAT(OneChar);
UNTIL Pos = STRLEN(DosText);
Старый 22.04.2005, 18:22   #7  
Kirvisniemi is offline
Kirvisniemi
Moderator
 
342 / 13 (1) ++
Регистрация: 21.12.2004
Немного поразмыслив решил код "упростить" :-)

Код:
WinText := '';
FOR Pos:=1 TO STRLEN(DosText) DO BEGIN
   Ch := DosText[Pos];
   Ch := Ch + ROUND(Ch/128,1,'<')*64 - ROUND(Ch/224,1,'<')*64 + 
              ROUND(Ch/224,1,'<')*16 - ROUND(Ch/240,1,'<')*16 + 
              ROUND(Ch/240,1,'<')*72 - ROUND(Ch/241,1,'<')*72 +
              ROUND(Ch/241,1,'<')*75 - ROUND(Ch/242,1,'<')*75;
   WinText+= FORMAT(Ch);
END;
Старый 01.11.2005, 16:54   #8  
Nechav is offline
Nechav
Участник
 
2 / 10 (1) +
Регистрация: 25.10.2005
Добрый день, Уважаемые!Я новичок в Navision. Объясните пожалуйста. Как из строки Dos866 получить строку Win1251. А то у меня почему то вместо строки символов получается строка цифр???
Старый 28.07.2006, 15:54   #9  
randrews is offline
randrews
Участник
Аватар для randrews
 
312 / 10 (1) +
Регистрация: 06.12.2004
Цитата:
Сообщение от tyrex Посмотреть сообщение
Немного поразмыслив решил код "упростить" :-)

Код:
WinText := '';
FOR Pos:=1 TO STRLEN(DosText) DO BEGIN
   Ch := DosText[Pos];
   Ch := Ch + ROUND(Ch/128,1,'<')*64 - ROUND(Ch/224,1,'<')*64 + 
              ROUND(Ch/224,1,'<')*16 - ROUND(Ch/240,1,'<')*16 + 
              ROUND(Ch/240,1,'<')*72 - ROUND(Ch/241,1,'<')*72 +
              ROUND(Ch/241,1,'<')*75 - ROUND(Ch/242,1,'<')*75;
   WinText+= FORMAT(Ch);
END;
Пишу датапорт с подгрузкой ... ну, допустим, описания товаров. В описании встречается символ '№'.
Перед подгрузкой конвертирую все в DOS (текстовым редактором). Символ '№' остается нетронутым.

Символ '№' выгружается из Navision (при помощи переменной типа File) в текст (DOS) c номером 0xFC что соответствует 252 символу.

В Windows 1251 символ '№' имеет код 0xB9 что соответствует 185.

Приходится делать так: кодирую все в DOS (текстовый файл). Запускаю побайтную замену 185 -> 252. После этого только датапортом гружу данные.

Кто-нить более удобный способ не нашел борьбы с подобными символами?
Старый 28.07.2006, 16:08   #10  
randrews is offline
randrews
Участник
Аватар для randrews
 
312 / 10 (1) +
Регистрация: 06.12.2004
Ступил. Можно же через csv в excel. А я делал через текстовый редактор
 


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

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

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