|
|
#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 кодировке? |
|
|
|
|
#2 |
|
Участник
|
Цитата:
P.S. Кстати, тут на форуме тема такая когда-то уже пробегала.. |
|
|
|
|
#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. Проверю позже, и результаты напишу. Если будут еще какие-нибудь идеи, то пиши, рад буду ознакомиться. |
|
|
|
|
#4 |
|
Участник
|
Должно побыстрее работать, но не сравнивал
Код: Init() ASCIIstr:=' АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№#'; ANSIstr:= ' ЊЌЋЏђ‘’“”•–—™љ›њќћџЈҐ©«®±Ііґµ»рстуфхцчшщъыьэюяЁёЄєЇїЎў°ј·Ѕ№¤ѕ N '; ANSIstr[66]:=185; ANSIstr[67]:=160; DosWin(New : Text[1024]) : Text[1024] EXIT(CONVERTSTR(New,ASCIIstr,ANSIstr)); |
|
|
|
|
#5 |
|
Участник
|
Цитата:
Сообщение от Storkich
Должно побыстрее работать, но не сравнивал
Код: Init() ASCIIstr:=' АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя№#'; ANSIstr:= ' ЊЌЋЏђ‘’“”•–—™љ›њќћџЈҐ©«®±Ііґµ»рстуфхцчшщъыьэюяЁёЄєЇїЎў°ј·Ѕ№¤ѕ N '; ANSIstr[66]:=185; ANSIstr[67]:=160; DosWin(New : Text[1024]) : Text[1024] EXIT(CONVERTSTR(New,ASCIIstr,ANSIstr)); |
|
|
|
|
#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;Крякозябры вместо русских букв при записи в текствый файл |
|
|
|
|
#7 |
|
Участник
|
Цитата:
Сообщение от AlexB
ameLoc,2);
Обсуждалось уже подробнее здесь Крякозябры вместо русских букв при записи в текствый файл |
|
|
|
|
#8 |
|
Участник
|
|
|
|
|
|
#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; |
|
|