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

Вниз

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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.065 c
15-1187362611
oldman
2007-08-17 18:56
2007.09.16
Гороскопы...


15-1187676722
AZIZE
2007-08-21 10:12
2007.09.16
И что из этого выйдет


2-1187687367
Quart
2007-08-21 13:09
2007.09.16
Query1.SQL.Assign(Edit1)


1-1183718871
azamatufa
2007-07-06 14:47
2007.09.16
FastReport счетчик группы внутри группы


15-1187600290
Наташа
2007-08-20 12:58
2007.09.16
Обращение к мадератором





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