Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.54 MB
Время: 0.027 c
15-1187275279
Igorek
2007-08-16 18:41
2007.09.16
Project Version


2-1187604435
vitv
2007-08-20 14:07
2007.09.16
Ошибка при открытии файла


8-1165527388
AndreyRu
2006-12-08 00:36
2007.09.16
Antialiasing Глифов!


15-1185530750
Vlad Oshin
2007-07-27 14:05
2007.09.16
шахматы. Как сходить?


1-1183551722
Bel
2007-07-04 16:22
2007.09.16
Запустить службу в Vista