Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.12.26;
Скачать: [xml.tar.bz2];

Вниз

не работает oemtochar()   Найти похожие ветки 

 
karburator   (2003-10-29 11:23) [0]

Подскажите почему DOS текст не конвертируется функцией oemtochar(),
или лучше самому писать конвертер ascii -> ansi?

мой код:
//================================================
//var pc1, pc2: PChar; //
begin
pc1:= "zdxfdsfgsh 1234567890 ЄапЄ®§пЎал";
oemtochar(pc1, pc2);
showmessage( "#"+strpas(pc2)+"#"+ inttostr(length(pc2)) );
end;
//================================================

PS: Если pc1 и pc2 объявлены в процедуре вызывающей ф-ю oemtochar(), то вылезает ошибка, если pc1 и pc2 глобальные переменные, то pc2 = ""


 
MBo   (2003-10-29 11:26) [1]

А кто будет память выделять?

В FAQ, кажется, пример oemtochar имеется.


 
Anatoly Podgoretsky   (2003-10-29 11:31) [2]

Пушкин вестимо


 
karburator   (2003-10-29 12:32) [3]

АГА! :)


 
karburator   (2003-10-30 05:42) [4]

Ну раз OemToChar не определяет размер переменнной pc2, то так и быть, я сам определю. Вот только для PChar-a не нашёл ф-ю для задания его размера пришлось использовать динамич. массив Char-ов. Не просветите ли меня, уважаемые мастера, как можно определить размер PChar-а без определения его содержимого (что-то типа setlength).

// так работает, но некрасиво #:-(
var
pc1: pchar;
pc2: array of char;
begin
pc1:= "zdxfdsfgsh 1234567890 абвэюя";
setlength(pc2, 33);
OemToChar(pc1, pchar(pc2));
showmessage("#"+strpas(pchar(pc2))+"#"+ inttostr(length(pc2)));
end;


 
MBo   (2003-10-30 06:31) [5]

GetMem, например


 
esVer   (2003-10-30 10:10) [6]

Рекомендуется "забить" на все эти OemToChar, AnsiUpperCase и пр. "прелести" Windows и взять у Анатолия Подгорецкого на homepage модуль перекодировки. Насколько понимаю, большинство в этой конференции работает и с русским текстом, а посему результат использования ф-ций Windows часто может быть далек от ожидаемого.


 
Игорь Шевченко   (2003-10-30 10:25) [7]

esVer © (30.10.03 10:10)

Забивать не рекомендуется


 
esVer   (2003-10-30 10:46) [8]

Игорь, а обосновать можно?


 
Игорь Шевченко   (2003-10-30 12:48) [9]

esVer © (30.10.03 10:46)

Конечно можно. Зачем изобретать велосипед, если он уже встроен в систему, причем с нужным количество колес.

> большинство в этой конференции работает и с русским текстом,
> а посему результат использования ф-ций Windows часто может
> быть далек от ожидаемого.

У каждой функции есть в Win32.hlp описание, где написано, что она делает. Для того, чтобы писать подобные заявления, нужно прочитать это описание, понять, что можно ожидать от функции, и не желать несбыточного. Функции эти работают в ПОЛНОМ соответствии со своими описаниями.


 
esVer   (2003-10-30 13:29) [10]

Ок. Будем считать, что я употребил некорректные формулировки.
Однако, если мне нужно работать с русским текстом как с русским, то предпочтительно не зависить от региональных настроек и "национальности" Windows.



Страницы: 1 вся ветка

Форум: "WinAPI";
Текущий архив: 2003.12.26;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.006 c
4-86586
KyRo
2003-10-30 02:18
2003.12.26
Еще один вопрос по Shell_NotifyIcon


1-86398
Ivolg
2003-12-14 17:06
2003.12.26
Прогресс


14-86504
chs2r
2003-12-04 15:47
2003.12.26
Восстановление удаленных файлов


14-86562
Кен
2003-11-22 07:31
2003.12.26
Высадку американцев на Луну снимал Стэнли Кубрик


7-86570
Dimok
2003-10-20 22:09
2003.12.26
Запрет на отключение компьютера





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