![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перекодирование из ANSI в OEM русского текста [D6, WinXP]
musicman © (2004-11-27 23:10:00)Коллеги!!! Помогите плиз...
Задача такая, надо перекодировать русский текст в кодировке ANSI в кодировку DOS...
Функция CharToOem не помогает, работает корректно только с Английским текстом...
ЧаГо делать то???
palva (2004-11-28 10:35:00) [1]1. AnsiToOem требует, чтобы оба параметра были типа PChar.
2. StrPas применять не нужно, поскольку в VCL всюду используются длинные строки.
3. CharToOem у меня тоже работает. Вот работающий пример консольного приложения:
uses Windows;
var
s1, s2: String;
begin
s1:='Будь ';
s2:='здоров!';
CharToOem(PChar(s1), PChar(s1));
AnsiToOem(PChar(s2), PChar(s2));
WriteLn(s1, s2); // Будь здоров
end.
musicman (2004-11-28 00:02:00) [2]pavla
Может я делаю чего не так???...
Оцени:
MemoFam.Lines.Text:=ZAPROS;
Begin
N:=MemoFam.Lines.GetText;
AnsiToOem(N,N);
MemoFam.Lines.Text:=StrPas(N);
end;
ZAPROS:=MemoFam.Lines.Text;
И ни чего не получается...
Да, забыл сказать, после конвертации текст записываеися в текстовый файл и сохраняется там...
Piter (2004-11-27 23:58:00) [3]
Вопрос: как перекодировать строку из кодировки OEM (DOS) в кодировку ANSI (Windows) и обратно?
Ответ: воспользоваться функциями CharToOem и OemToChar. Пример:
function Win2Dos(const aStr: String): String;
begin
Result := aStr;
if Result <> '' then
CharToOem(PChar(Result),PChar(Result));
end;
function Dos2Win(const aStr: String): String;
begin
Result := aStr;
if Result <> '' then
OemToChar(PChar(Result),PChar(Result));
end;
Отвечал: Panov
Работает нормально и с русскими буквами тоже...
palva (2004-11-27 23:51:00) [4]Не знаю как насчет CharToOem, но AnsiToOem обязательно должна работать. Это API-функция, и она не зависит от локали. Она работает одинаково и для немцев и дляфранцузов.
musicman (2004-11-27 23:46:00) [5]pavla
вот именно не отличается...
а русский отличается... и не перекодируется... :(((
palva (2004-11-27 23:44:00) [6]musicman (27.11.04 23:10)
> работает корректно только с Английским текстом
А чем ANSI отличается от DOS для английских букв?
ssk (2004-11-27 23:13:00) [7]http://delphibase.endimus.ru/?action=viewfunc&topic=strconvert&id=10476