Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.26;
Скачать: CL | DM;

Вниз

не работает 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 вся ветка

Текущий архив: 2003.12.26;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.012 c
3-86268
ki11er
2003-12-03 14:12
2003.12.26
Как записать запрос в таблицу?


1-86369
Vadim S
2003-12-15 17:02
2003.12.26
RXDateEditAcceptDate( в RXLIb


3-86301
VadimLG
2003-12-02 14:19
2003.12.26
Поиск в БД: переход на следующую строку


3-86274
MicroWorld
2003-12-03 11:28
2003.12.26
настройка IB


14-86516
Вованчик
2003-12-04 10:48
2003.12.26
Типа день информатики