![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сохранение в кодировке DOS(866) [D6, Win2k]
NSerge © (2004-11-29 18:57:00)Доброго времени суток!
Возникла необходимость создать большое количество bat-файлов для автоматизации настройки Windows. В командах встречаются русские буквы и после создания этих файлов в момент исполнения все эти русские буквы превращаются в закорючки. Само собой команды не исполняются :(
Подскажите, пожалуйста, как сохранить эти файлы в DOS кодировке, чтобы русские буквы адекватно воспринимались эмулятором DOS на Windows машинах?
ALS (2004-11-30 16:45:00) [1]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
);
...
NSerge (2004-11-30 16:31:00) [2]Все бы хорошо, но только AnsiToOem и CharToOem у меня в хелпе вообще нет :(
Делфи 7.0
Anatoly Podgoretsky (2004-11-30 13:23:00) [3]NSerge © (30.11.04 11:44) [8]
а к мануалам и хелпу послать каждый сможет :)
Тебя же не просто в справку послали, а в конкретный пункт справки, который обязателен к прочтению, может тогда бы ты более критичнее отнесься к приведеному коду. Этот код для Win 3.11 и работает на платформе НТ только, поскольку поддержан для совместимости.
А про оптимальность кода тоже особенно говорить не приходится.
NSerge (2004-11-30 12:55:00) [4]ALS спасибо за ответ в виде кода :)
Еще один вопрос:
Мне нужно сохранить в файл последовательность строк, а в данном примере, TStringList.Create.SaveToFile(FName) разве не будет перезаписывать создаваемый файл каждый раз при вызове процедуры SaveOemStringToFile?
Сорри, возможно это вопросы ламера, но, видно я таковым в Делфи и являюсь :( не ругайтесь сильно :)
ALS (2004-11-30 12:40:00) [5]
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 11:44:00) [6]Если бы я мог сам во всем этом разобраться, то не стал бы просить помощи на этом форуме :(
Если есть что-нибудь по существу вопроса, то подскажите, пожалуйста, а к мануалам и хелпу послать каждый сможет :)
HSolo (2004-11-30 11:21:00) [7]>NSerge © (30.11.04 10:42)
Не все и неправильно :) Зачем побуквенно-то? Вы в help загляните, многое прояснится :)
NSerge (2004-11-30 10:42:00) [8]А если можно, то подробнее... Т.е. нужно создать переменную типа String of Char, потом присвоить ей значение в виде строки русского текста, затем побуквенно перекодировать эту строку в другую с помощью CharToOem, а только потом уже новую строчку сохранить в файле?
Все ли я правильно понял?
palva (2004-11-29 21:44:00) [9]Ну тогда перекодируйте русские буквы перед тем как записать их в файл. AnsiToOem и CharToOem подойдут - всё равно чем. Тогда и перекодировать не надо будет.
NSerge (2004-11-29 21:39:00) [10]Да нет, вы меня не совсем правильно поняли... а может и я не совсем нормально объяснил...
Нужно сделать чтобы программа, которая создает эти bat-файлы сохраняла в них текст таким образом, чтобы русский текст был в формате DOS.
Насчет AnsiToOem и CharToOem можно подробнее, плиз :) А то когда необходимо файл из ДОС формата перекодировать в Виндовую кодировку всегда используют Memo, а тут так же нужно будет?
Сохранять в файл в формате Виндов, а потом открывать его и перекодировать? А сразу задать формат файла нельзя?
ALS (2004-11-29 19:44:00) [11]Перед сохранением перекодируй. AnsiToOem поможет
Юрий Зотов (2004-11-29 19:44:00) [12]Программно - CharToOem.
Вручную - шрифт Terminal.
palva (2004-11-29 19:07:00) [13]Редактор файлового менеджера FAR может сохранять в DOS. Есть также куча Windows-редакторов. Я пользуюсь www.Textpad.com Правда он коммерческий.