Главная страница
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.03 c
14-1101233276
DillerXX
2004-11-23 21:07
2004.12.12
и опять мой винт :(


3-1100096254
Andriy Tysh
2004-11-10 17:17
2004.12.12
Как вывести отчёт КвикРепортом из КлиентДатаСета только те записи


1-1101648469
Dmitry_04
2004-11-28 16:27
2004.12.12
Окно сворачивается на панель задачь...


4-1099238292
Arnold
2004-10-31 18:58
2004.12.12
Выравнивание в TEdit


3-1100453708
Недалекий
2004-11-14 20:35
2004.12.12
Delphi - IBX - Insert