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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 25.06.2010, 10:46   #1  
Programmer2 is offline
Programmer2
Участник
 
7 / 10 (1) +
Регистрация: 25.06.2010
Здравствуйте.

Суть моего вопроса такая: я не знаю создать файл в 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  
RedFox is offline
RedFox
Участник
 
1,441 / 10 (0) +
Регистрация: 28.12.2004
Адрес: Киев
Цитата:
Сообщение от Programmer2 Посмотреть сообщение
Файл TEST_file.txt на диске создался нормально и с верными данными в кодировке DOS.
Вопрос: можно сделать так, чтоб файл записывался в WINDOWS кодировке?
Сам никогда не пользовался, но посню, что есть СЮ 12400 и функция Dos2Win.

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

DosWin(New : Text[1024]) : Text[1024]
EXIT(CONVERTSTR(New,ASCIIstr,ANSIstr));
Добрый день. не хочется казаться профаном, но как получена строчка ' ЊЌЋЏђ‘’“”•–—˜™љ›њќћџЈҐ©«­®±Ііґµ»рстуфхцчшщъыьэюяЁёЄєЇїЎў°ј·Ѕ№¤ѕ N ', ведь у ANSI она выглядит ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—˜™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕїАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя
Старый 29.08.2012, 20:58   #6  
alexb_imported is offline
alexb_imported
Участник
 
256 / 12 (1) ++
Регистрация: 25.08.2006
Проблема решается без какой-либо конвертации 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  
Dimis is offline
Dimis
Участник
 
8 / 10 (1) +
Регистрация: 14.05.2012
Цитата:
Сообщение от AlexB Посмотреть сообщение
ameLoc,2);


Обсуждалось уже подробнее здесь
Крякозябры вместо русских букв при записи в текствый файл
дело в том что в версии 2.6 такого не успели сделать) приходится костыль изобретать. хотя если кто нить заделится механизмом этой функции, я б запростл наподобии что нить написал. заранее спасибо
Старый 30.08.2012, 10:24   #8  
Kalex63 is offline
Kalex63
Участник
 
18 / 10 (1) +
Регистрация: 20.10.2007
Цитата:
Сообщение от AlexB Посмотреть сообщение
Проблема решается без какой-либо конвертации Win2Dos, a имменно строчкой
Код:
OuStrim.Charset('windows-1251');  -> русская кодировка
Небольшое уточнение.
OuStrim - это Automation 'Microsoft ActiveX Data Objects 2.8 Library'.Stream
Старый 30.08.2012, 13:45   #9  
Dimis is offline
Dimis
Участник
 
8 / 10 (1) +
Регистрация: 14.05.2012
Цитата:
Сообщение от Kalex63 Посмотреть сообщение
Цитата:
Сообщение от AlexB Посмотреть сообщение
Проблема решается без какой-либо конвертации Win2Dos, a имменно строчкой
Код:
OuStrim.Charset('windows-1251');  -> русская кодировка
Небольшое уточнение.
OuStrim - это Automation 'Microsoft ActiveX Data Objects 2.8 Library'.Stream
Да..Ваще гутно.. Спасибо огромное.
Вот заветный код.

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;
 


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

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

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