22.04.2005, 16:55 | #1 |
Участник
|
Кто-нибуть в курсе - вообще возможно ли сделать выгрузку из навижена в тектовый файл в виндусовой кодировке?
Или 866 кодовая страница незыблема и изменению не подается? |
|
22.04.2005, 17:08 | #2 |
Участник
|
я такую функцию писал,
а вообще если длина строки мала можно же после выгрузки внешней утилитой пользоваться с помощью 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 |
Участник
|
http://www.axforum.ru/forums/showthread.ph...63550#post63550
Последние два сообщения в этой ветке.
__________________
MBS Certified Master in Navision Developer |
|
22.04.2005, 17:28 | #4 |
Участник
|
В нашей версии (2.60) такой функции нет...
|
|
22.04.2005, 17:31 | #5 |
Участник
|
Да в 3.60 есть...
|
|
22.04.2005, 17:37 | #6 |
Moderator
|
Зачем? Есть кодюнит 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 |
Moderator
|
Немного поразмыслив решил код "упростить" :-)
Код: 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 |
Участник
|
Добрый день, Уважаемые!Я новичок в Navision. Объясните пожалуйста. Как из строки Dos866 получить строку Win1251. А то у меня почему то вместо строки символов получается строка цифр???
|
|
28.07.2006, 15:54 | #9 |
Участник
|
Цитата:
Сообщение от 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 |
Участник
|
Ступил. Можно же через csv в excel. А я делал через текстовый редактор
|
|