Текущий архив: 2007.09.16;
Скачать: CL | DM;
ВнизInteger to widechar Найти похожие ветки
← →
stanislav © (2007-08-22 11:01) [0]Подскажите пожалуйста как преобразовать Integer в WideChar
← →
Сергей М. © (2007-08-22 11:05) [1]WideCharValue := PWideChar(@IntegerVar)^;
← →
stanislav © (2007-08-22 11:12) [2]Сергей М. © (22.08.07 11:05) [1]
Я извеняюсь - наверное неправильно объяснил.
Мне нужно получить символ типа WideChar
← →
clickmaker © (2007-08-22 11:14) [3]
> символ типа WideChar
WCh := Word(Integer)
← →
Сергей М. © (2007-08-22 11:18) [4]
> Мне нужно получить символ типа WideChar
Integer-переменная в Д7 способна хранить два таких символа - один в младшем слове, другой в старшем.
Пример в [1] - для младшего слова.
Для старшего слова:
WideCharValue := PWideChar(@IntegerVar)[1];
← →
stanislav © (2007-08-22 11:21) [5]clickmaker © (22.08.07 11:14) [3]
Так не работает.
← →
clickmaker © (2007-08-22 11:23) [6]
> [5] stanislav © (22.08.07 11:21)
а откуда вообще этот интежер? как он заполняется?
← →
stanislav © (2007-08-22 11:31) [7]Вобщем хочу сделать таблицу символов, использую для отображения cxGrid он вроде поддерживает юникод
Var I,j,Index,symbol:Word; //было Integer - заменил на юникод
A:WideChar;
begin
Symbol:=2337;
For J:=1 to 22 do
begin
Index:=CxGrid1.Views[0].DataController.AppendRecord;
For i:=0 to 9 do
begin
A:=Symbol; //В А нужно записать символ соответствующию коду Symbol
CxGrid1.Views[0].DataController.SetValue(Index,i,A);
inc(Symbol);
end;
end;
← →
stanislav © (2007-08-22 11:32) [8]нужно читать:
//было Integer - заменил на Word
← →
stanislav © (2007-08-22 11:43) [9]Сергей М. © (22.08.07 11:18) [4]
А так возвращает одно и тоже число, независимо от IntegerVar - похоже адрес переменной.
← →
clickmaker © (2007-08-22 11:44) [10]
> CxGrid1.Views[0].DataController.SetValue(Index,i,A);
2337 - воскл. знак?
а что вместо него?
← →
stanislav © (2007-08-22 11:45) [11]Вот так все работает как надо, только хочется это все в грид записать
Var A:WideString; I:Integer;
begin
For I:=2337 to 2557 do SendMessage (Richedit1.Handle,WM_CHAR,I,0);
← →
stanislav © (2007-08-22 11:47) [12]вместо него возвращает 2337 если Сергей М. © (22.08.07 11:05) [1]
Если clickmaker © (22.08.07 11:14) [3], то при компиляции ошибка несовпадение типов Word и WideChar
← →
clickmaker © (2007-08-22 11:50) [13]
> Если clickmaker © (22.08.07 11:14) [3], то при компиляции
> ошибка
ну это схематично. Т.е. если в интежер положить widechar, то он ляжет в младшее слово. Просто достань его оттуда
← →
umbra © (2007-08-22 11:51) [14]
Var I,j,Index,symbol:Word; //было Integer - заменил на юникод
A:WideChar absolute Symbol;
begin
Symbol:=2337;
For J:=1 to 22 do
begin
Index:=CxGrid1.Views[0].DataController.AppendRecord;
For i:=0 to 9 do
begin
CxGrid1.Views[0].DataController.SetValue(Index,i,A);
inc(Symbol);
end;
end;
← →
stanislav © (2007-08-22 11:54) [15]umbra © (22.08.07 11:51) [14]
Все равно пишеться значение переменной Symbol, т.е. цифра
A:WideChar absolute Symbol; - нигде не встречал такого объявления переменных :-)
← →
Сергей М. © (2007-08-22 11:59) [16]
> значение переменной Symbol, т.е. цифра
"цифра" не может быть значением какой бы то ни было переменной.
Значением переменной, в дан.сл. типа Word, может быть число.
← →
clickmaker © (2007-08-22 12:01) [17]
> Все равно пишеться значение переменной Symbol, т.е. цифра
странно...
а если так?
wsprintf(strOut, "%C", symbol)
← →
stanislav © (2007-08-22 12:01) [18]Сергей М. © (22.08.07 11:59) [16]
:-)
Ок число.
← →
Сергей М. © (2007-08-22 12:10) [19]
> stanislav © (22.08.07 12:01) [18]
> Ок число
И ты уверен, что это число представляет собой код некоего символа в юникодовой кодировке ?
← →
stanislav © (2007-08-22 12:11) [20]clickmaker © (22.08.07 12:01) [17]
wsprintf - у меня только 2 параметр StrOut и Format
← →
umbra © (2007-08-22 12:11) [21]
> Все равно пишеться значение переменной Symbol, т.е. цифра
тогда, наверное, дело в гриде.
← →
stanislav © (2007-08-22 12:12) [22]Сергей М. © (22.08.07 12:10) [19]
в stanislav © (22.08.07 11:45) [11] возвращает набор символов.
← →
clickmaker © (2007-08-22 12:12) [23]var
W: Word;
WC: WideChar;
S: array[0..1] of WideChar;
begin
W := $38F;
WC := WideChar(W);
S[0] := WC;
S[1] := #0;
MessageBoxW(Handle, S, "Hi", 0);
нормально показывает букву Омегу U+038F
а символа с кодом 2337 в character map не нашел
← →
DevilDevil © (2007-08-22 12:13) [24]может так...
WideChar := WideString(IntToStr(Integer))[1];
← →
Сергей М. © (2007-08-22 12:16) [25]
> stanislav © (22.08.07 12:12) [22]
Тогда приведи полную выдержку из справки к методу SetValue()
← →
stanislav © (2007-08-22 12:17) [26]clickmaker © (22.08.07 12:12) [23]
Наверное действительно дело в гриде. Пишет 911.
← →
stanislav © (2007-08-22 12:26) [27]A:=WideChar(Symbol);
B:=A;
Где B WideString Возвращает "?". Хотя тип колонки WideString
в SetValue () 3-й параметр типа Variant, скорее всего преобразование неправильно работает.
Сергей М. © (22.08.07 12:16) [25] - справки нет.
Вобщем понятно что проблема с гридом.
Всем спасибо что помогли.
А где же взять грид чтобы отображал юникод?
← →
clickmaker © (2007-08-22 12:27) [28]
> где же взять грид чтобы отображал юникод?
а в TNT Unicode Controls нету?
← →
Сергей М. © (2007-08-22 12:28) [29]
> справки нет
Метод научного тыка я не приветствую)
← →
stanislav © (2007-08-22 12:56) [30]clickmaker © (22.08.07 12:27) [28]
TNT Unicode Controls - Это набор компонент, а где их скачать?
← →
clickmaker © (2007-08-22 13:22) [31]http://www.tntware.com/delphicontrols/unicode/
← →
umbra © (2007-08-22 13:24) [32]
> TNT Unicode Controls - Это набор компонент, а где их скачать?
>
>
http://www.tmssoftware.com/go.asp?tmsuni
только они теперь платные стали. Может где-то еще старые версии найти можно.
← →
Сергей М. © (2007-08-22 13:27) [33]
> stanislav
Городить огород со сторонними компонентами для такой тривиальной задачи вряд ли уместно.
Берется обычный TDrawGrid и в его ячейки выводится юникод-текст средствами [Ext]TextOutW.
Работы на час.
← →
umbra © (2007-08-22 13:29) [34]вот, нашел - http://mh-nexus.de/tntunicodecontrols.htm
← →
stanislav © (2007-08-22 14:11) [35]Сергей М. © (22.08.07 13:27) [33]
Это выход. Спасибо за совет!
clickmaker © (22.08.07 13:22) [31]
umbra © (22.08.07 13:29) [34]
Спасибо, посмотрю!
Страницы: 1 вся ветка
Текущий архив: 2007.09.16;
Скачать: CL | DM;
Память: 0.52 MB
Время: 0.08 c