Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];

Вниз

Сохранение в кодировке 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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.036 c
4-1098878539
Jay
2004-10-27 16:02
2004.12.12
Закрыть окно


3-1100276805
jiura334
2004-11-12 19:26
2004.12.12
Как сделать активной N-ую строку TDbGrid?


14-1101062985
ArMellon
2004-11-21 21:49
2004.12.12
Кому нечего делать....выскажите мнение о моем чате


3-1099924459
Denisiy
2004-11-08 17:34
2004.12.12
Передать запрос на сервер в строковой переменной.. или как лучше?


3-1100169075
Kerk
2004-11-11 13:31
2004.12.12
Аналог DECODE в MSAccess





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский