25.06.2010, 10:46 | #1 |
Участник
|
Здравствуйте.
Суть моего вопроса такая: я не знаю создать файл в WINDOWS кодировке. Опишу подробно на примере: F - переменная типа File OutStrim - переменная типа OutStrim Выполняется такой код: F.CREATE('TEST_file.txt'); F.TEXTMODE(TRUE); F.CREATEOUTSTREAM(OutStrim); OutStrim.WRITETEXT('{1:F01K059490000000000000000}'); OutStrim.WRITETEXT(); OutStrim.WRITETEXT('Купить машину');OutStrim.WRITETEXT(); F.CLOSE(); Файл TEST_file.txt на диске создался нормально и с верными данными в кодировке DOS. Вопрос: можно сделать так, чтоб файл записывался в WINDOWS кодировке? |
|
25.06.2010, 11:16 | #2 |
Участник
|
Цитата:
P.S. Кстати, тут на форуме тема такая когда-то уже пробегала.. |
|
25.06.2010, 12:13 | #3 |
Участник
|
Как приятно работать с знающими людьми!! )))
RedFox, спасибо за подсказку. Сделал след. образом: F - переменная типа File OutStrim - переменная типа OutStrim cuLocalisationManagement переменная типа Codeunit - Localisation Management. F.CREATE('TEST_file.txt'); F.TEXTMODE(TRUE); F.CREATEOUTSTREAM(OutStrim); OutStrim.WRITETEXT(cuLocalisationManagement.Dos2Win('{1:F01K059490000000000000000}')); OutStrim.WRITETEXT(); OutStrim.WRITETEXT(cuLocalisationManagement.Dos2Win('Купить машину'));OutStrim.WRITETEXT(); F.CLOSE(); Файл TEST_file.txt на диске создался нормально и с верными данными, вроде, в кодировке WINDOWS. Проверю позже, и результаты напишу. Если будут еще какие-нибудь идеи, то пиши, рад буду ознакомиться. |
|
02.07.2010, 19:38 | #4 |
Участник
|
Должно побыстрее работать, но не сравнивал
Код: Init() ASCIIstr:=' АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№#'; ANSIstr:= ' ЊЌЋЏђ‘’“”•–—™љ›њќћџЈҐ©«®±Ііґµ»рстуфхцчшщъыьэюяЁёЄєЇїЎў°ј·Ѕ№¤ѕ N '; ANSIstr[66]:=185; ANSIstr[67]:=160; DosWin(New : Text[1024]) : Text[1024] EXIT(CONVERTSTR(New,ASCIIstr,ANSIstr)); |
|
29.08.2012, 13:45 | #5 |
Участник
|
Цитата:
Сообщение от Storkich
Должно побыстрее работать, но не сравнивал
Код: Init() ASCIIstr:=' АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№#'; ANSIstr:= ' ЊЌЋЏђ‘’“”•–—™љ›њќћџЈҐ©«®±Ііґµ»рстуфхцчшщъыьэюяЁёЄєЇїЎў°ј·Ѕ№¤ѕ N '; ANSIstr[66]:=185; ANSIstr[67]:=160; DosWin(New : Text[1024]) : Text[1024] EXIT(CONVERTSTR(New,ASCIIstr,ANSIstr)); |
|
29.08.2012, 20:58 | #6 |
Участник
|
Проблема решается без какой-либо конвертации Win2Dos, a имменно строчкой
Код: OuStrim.Charset('windows-1251'); -> русская кодировка Код: FileNameLoc := 'c:\Temp\Kyrill.txt'; textLoc := 'русские буквы'; CREATE(StreamLoc); StreamLoc.Open; StreamLoc.Charset('windows-1251'); // русская кодировка StreamLoc.WriteText(textLoc); StreamLoc.SaveToFile(FileNameLoc,2); StreamLoc.Close; Крякозябры вместо русских букв при записи в текствый файл |
|
30.08.2012, 08:53 | #7 |
Участник
|
Цитата:
Сообщение от AlexB
ameLoc,2);
Обсуждалось уже подробнее здесь Крякозябры вместо русских букв при записи в текствый файл |
|
30.08.2012, 10:24 | #8 |
Участник
|
|
|
30.08.2012, 13:45 | #9 |
Участник
|
Цитата:
Вот заветный код. CREATE(OuStream); OuStream.Open(); OuStream.Charset('windows-1251'); // русская кодировка OuStream.LoadFromFile('C:\kl_to_1c.txt'); WHILE NOT (OuStream.EOS()) DO MESSAGE(FORMAT(OuStream.ReadText(-2))); OuStream.Close; |
|