Главная страница
    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.46 MB
Время: 0.038 c
1-1101664029
Express
2004-11-28 20:47
2004.12.12
Ошибки Delphi


1-1101055819
Гаврилов В.А.
2004-11-21 19:50
2004.12.12
Почему не работает ссылка с рабочего стола


10-1070985161
lionson
2003-12-09 18:52
2004.12.12
утечка памяти в корба-сервере


8-1094821384
_Demik_
2004-09-10 17:03
2004.12.12
WebCam Logitech - как записать ролик и получить снимок


1-1101740956
Wolffgang
2004-11-29 18:09
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский