Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.57 MB
Время: 0.051 c
4-1098990394
peppperok
2004-10-28 23:06
2004.12.12
Кнопка Видовс !!!!!!!


4-1098854639
Shura
2004-10-27 09:23
2004.12.12
Привилегии WindowsXP и MailSlot


14-1100999523
olookin
2004-11-21 04:12
2004.12.12
Когда в Вашем городе начинает ходить общ. транспорт?


6-1096729488
Луарвик
2004-10-02 19:04
2004.12.12
Правильный запрос (а не вопрос :))


3-1100428523
Megabyte
2004-11-14 13:35
2004.12.12
Не могу сделать запрос по вычисляемому полю





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский