Главная страница
    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.049 c
3-1099555085
Victor!
2004-11-04 10:58
2004.12.12
Как обойти дел. на ноль в JetSQL


14-1100689742
infom
2004-11-17 14:09
2004.12.12
Люди чувствуют когда на них смотрят ?


14-1100852166
msguns
2004-11-19 11:16
2004.12.12
"Потрепанный орешник"


3-1100087505
Dmitriy O.
2004-11-10 14:51
2004.12.12
Помогите с SQL выборкой !


1-1101640633
serko
2004-11-28 14:17
2004.12.12
DateTimePicker





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский