Форум: "Основная";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];
ВнизПерекодирование из ANSI в OEM русского текста Найти похожие ветки
← →
musicman (2004-11-27 23:10) [0]Коллеги!!! Помогите плиз...
Задача такая, надо перекодировать русский текст в кодировке ANSI в кодировку DOS...
Функция CharToOem не помогает, работает корректно только с Английским текстом...
ЧаГо делать то???
← →
ssk © (2004-11-27 23:13) [1]http://delphibase.endimus.ru/?action=viewfunc&topic=strconvert&id=10476
← →
palva © (2004-11-27 23:44) [2]musicman (27.11.04 23:10)
> работает корректно только с Английским текстом
А чем ANSI отличается от DOS для английских букв?
← →
musicman (2004-11-27 23:46) [3]pavla
вот именно не отличается...
а русский отличается... и не перекодируется... :(((
← →
palva © (2004-11-27 23:51) [4]Не знаю как насчет CharToOem, но AnsiToOem обязательно должна работать. Это API-функция, и она не зависит от локали. Она работает одинаково и для немцев и дляфранцузов.
← →
Piter © (2004-11-27 23:58) [5]
Вопрос: как перекодировать строку из кодировки 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
Работает нормально и с русскими буквами тоже...
← →
musicman (2004-11-28 00:02) [6]pavla
Может я делаю чего не так???...
Оцени:
MemoFam.Lines.Text:=ZAPROS;
Begin
N:=MemoFam.Lines.GetText;
AnsiToOem(N,N);
MemoFam.Lines.Text:=StrPas(N);
end;
ZAPROS:=MemoFam.Lines.Text;
И ни чего не получается...
Да, забыл сказать, после конвертации текст записываеися в текстовый файл и сохраняется там...
← →
palva © (2004-11-28 10:35) [7]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.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2004.12.12;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.049 c