Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.12.12;
Скачать: CL | DM;

Вниз

Сохранение в кодировке DOS(866)   Найти похожие ветки 

 
NSerge ©   (2004-11-29 18:57) [0]

Доброго времени суток!

Возникла необходимость создать большое количество bat-файлов для автоматизации настройки Windows. В командах встречаются русские буквы и после создания этих файлов в момент исполнения все эти русские буквы превращаются в закорючки. Само собой команды не исполняются :(
Подскажите, пожалуйста, как сохранить эти файлы в DOS кодировке, чтобы русские буквы адекватно воспринимались эмулятором DOS на Windows машинах?


 
palva ©   (2004-11-29 19:07) [1]

Редактор файлового менеджера FAR может сохранять в DOS. Есть также куча Windows-редакторов. Я пользуюсь www.Textpad.com Правда он коммерческий.


 
ALS ©   (2004-11-29 19:44) [2]

Перед сохранением перекодируй. AnsiToOem поможет


 
Юрий Зотов ©   (2004-11-29 19:44) [3]

Программно - CharToOem.
Вручную - шрифт Terminal.


 
NSerge ©   (2004-11-29 21:39) [4]

Да нет, вы меня не совсем правильно поняли... а может и я не совсем нормально объяснил...

Нужно сделать чтобы программа, которая создает эти bat-файлы сохраняла в них текст таким образом, чтобы русский текст был в формате DOS.

Насчет AnsiToOem и CharToOem можно подробнее, плиз :) А то когда необходимо файл из ДОС формата перекодировать в Виндовую кодировку всегда используют Memo, а тут так же нужно будет?
Сохранять в файл в формате Виндов, а потом открывать его и перекодировать? А сразу задать формат файла нельзя?


 
palva ©   (2004-11-29 21:44) [5]

Ну тогда перекодируйте русские буквы перед тем как записать их в файл. AnsiToOem и CharToOem подойдут - всё равно чем. Тогда и перекодировать не надо будет.


 
NSerge ©   (2004-11-30 10:42) [6]

А если можно, то подробнее... Т.е. нужно создать переменную типа String of Char, потом присвоить ей значение в виде строки русского текста, затем побуквенно перекодировать эту строку в другую с помощью CharToOem, а только потом уже новую строчку сохранить в файле?
Все ли я правильно понял?


 
HSolo ©   (2004-11-30 11:21) [7]

>NSerge ©   (30.11.04 10:42)
Не все и неправильно :) Зачем побуквенно-то? Вы в help загляните, многое прояснится :)


 
NSerge ©   (2004-11-30 11:44) [8]

Если бы я мог сам во всем этом разобраться, то не стал бы просить помощи на этом форуме :(
Если есть что-нибудь по существу вопроса, то подскажите, пожалуйста, а к мануалам и хелпу послать каждый сможет :)


 
ALS ©   (2004-11-30 12:40) [9]


procedure SaveOemStringToFile(const S: string; const FName: string);
var sTmp: string;
begin
 if S = "" then exit;
 SetLength(sTmp, length(S));
 AnsiToOem(PChar(S), PChar(sTmp));
 with TStringList.Create do
 try
   Text := sTmp;
   SaveToFile(FName)
 finally
   Free
 end;
end;


 
NSerge ©   (2004-11-30 12:55) [10]

ALS спасибо за ответ в виде кода :)
Еще один вопрос:
Мне нужно сохранить в файл последовательность строк, а в данном примере, TStringList.Create.SaveToFile(FName) разве не будет перезаписывать создаваемый файл каждый раз при вызове процедуры SaveOemStringToFile?

Сорри, возможно это вопросы ламера, но, видно я таковым в Делфи и являюсь :( не ругайтесь сильно :)


 
Anatoly Podgoretsky ©   (2004-11-30 13:23) [11]

NSerge ©   (30.11.04 11:44) [8]
а к мануалам и хелпу послать каждый сможет :)

Тебя же не просто в справку послали, а в конкретный пункт справки, который обязателен к прочтению, может тогда бы ты более критичнее отнесься к приведеному коду. Этот код для Win 3.11 и работает на платформе НТ только, поскольку поддержан для совместимости.
А про оптимальность кода тоже особенно говорить не приходится.


 
NSerge ©   (2004-11-30 16:31) [12]

Все бы хорошо, но только AnsiToOem и CharToOem у меня в хелпе вообще нет :(
Делфи 7.0


 
ALS ©   (2004-11-30 16:45) [13]

Help -> Windows SDK -> Index -> CharToOem :
The CharToOem function translates a string into the OEM-defined character set. (OEM stands for original equipment manufacturer.) This function supersedes the AnsiToOem function.

BOOL CharToOem(

   LPCTSTR lpszSrc, // pointer to string to translate  
   LPSTR lpszDst  // pointer to translated string
  );
...



Страницы: 1 вся ветка

Текущий архив: 2004.12.12;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.025 c
4-1098815215
antonioxxx
2004-10-26 22:26
2004.12.12
Две мыши в системе


14-1100879277
icebeerg
2004-11-19 18:47
2004.12.12
Поределение точки пересечения прямых


9-1091606822
Ландграф Павел
2004-08-04 12:07
2004.12.12
поиск пути не по клеткам...


6-1087306299
Григорьев Антон
2004-06-15 17:31
2004.12.12
Прошу оценить статью про сокеты


14-1101363932
NewDelpher
2004-11-25 09:25
2004.12.12
Вопрос ученым: Нужен ли диссертант научному руководителю?