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

Вниз

Перекодирование из 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.024 c
14-1100897306
dmk
2004-11-19 23:48
2004.12.12
Владельцам автомобилей


1-1101762349
SDV
2004-11-30 00:05
2004.12.12
Error


3-1100083717
denis24
2004-11-10 13:48
2004.12.12
групировка по полю memo,обьекта OLE в запросе


4-1098557566
Comp
2004-10-23 22:52
2004.12.12
Tab_Control и поддержка Visual Styles


3-1100248492
mazepa
2004-11-12 11:34
2004.12.12
пустое поле