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

Вниз

Как узнать код Юникодовского символа?   Найти похожие ветки 

 
Cara ©   (2004-08-08 13:27) [0]

Доброго дня.
Есть строка в юникоде.
Надо получить код для каждого её символа.
Пример:
?*(?/2+1) - строка в программе источнике (юникод).
При вставке в мою программу получаю ?*(?/2+1).
Я так понимаю,
что каждому символу соответствует
определённый код, и я смогу получив этот код сделать так:
---------
var
w : WideString;
iw : integer;
n_s : string;
begin
iw := ord(w);
if iw = 8242 then
begin
 n_s := "pi";
end;
---------
Примерно так.
Вопрос:
Как точно узнать код символа, выражение iw := ord(w);не работает, каждый раз выдаёт разное значение.


 
Cara ©   (2004-08-08 13:29) [1]

Ну вот, началось.  В вопросе стояло так -
Пример:
--
?*(?/2+1) - строка в программе источнике (юникод).
При вставке в мою программу получаю ?*(?/2+1).
--
При переносе из формы заполнения (при создании вопроса), произошло то же самое что и у меня в проге.


 
Cara ©   (2004-08-08 13:31) [2]

Опять, там короче так:
pi*(i/2+1), только в юникоде.


 
Anatoly Podgoretsky ©   (2004-08-08 13:59) [3]

ord можно применять только к перечислимым типам, WideString относится к структурным.


 
Cara ©   (2004-08-08 14:12) [4]

Я про это слышал. Как поступать с WideString ?


 
Anatoly Podgoretsky ©   (2004-08-08 14:26) [5]

Обращаться к элементу строки.


 
Cara ©   (2004-08-08 14:37) [6]

Т.е. к символу. Я и так делал:
var
w : WideString;
iw,ic : integer;
n_s : string;
begin
ic := 1;
iw := ord(w[ic]);
if iw = 8242 then
begin
n_s := "pi";
end;
Результат так же никакой.


 
Cobalt ©   (2004-08-09 00:16) [7]

Хм, странно

Вот мой пример - работает на ура - выдаёт одно и тоже значение(1069):
const MyString : WideString = "1 Это текст 2";
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(IntToStr(Ord(MyString[3])));
end;


Возникает вопрос - а точно ты получаешь строку в юникоде? Как получаешь?


 
Cara ©   (2004-08-09 22:25) [8]

Получаю так:
var
w : WideString;
begin
SetLength(w,SendMessage(h4,WM_GETTEXTLENGTH,0,0)+1);
SetLength(w,SendMessage(h4,WM_GETTEXT,Length(w),LPARAM(w)));
end;

И уже переменную (строку) - "w" пытаюсь разложить посимвольно, и получить коды этих символов.
В приложении откуда я забираю эту строку шрифт точно юникодовский.


 
Cobalt ©   (2004-08-09 23:19) [9]

А вот это уже вопрос - что ты получаешь - Юникод или нет.
Ты буфер проверял? (то есть что на самом деле лежит в памяти)
Может, тебе в ANSI выдаёт - сталкивался, может быть, что кодировка текста зависит от раскладки - русская или не руссская. Копируешь из, например, Винампа текст с русскими буквами в Блокнот. И посмотрите - при активной русской раскладке в Винампе (при копировании) - текст, при английской - кракозябры.


 
ZrenBy ©   (2004-08-10 12:59) [10]

GetWindowTextLengthW
GetWindowTextW

?


 
Cobalt ©   (2004-08-10 16:11) [11]

2 ZrenBy ©   (10.08.04 12:59) [10]
Вообще-то, тут не всё так ясно - ведь:

Remarks

This function causes a WM_GETTEXT message to be sent to the specified window or control.

И оконная функция заполняет этот буфер (? который уже потом трактуется (или преобразуется? но по каким правилам?) как PWideChar?) своим текстом. Который записывается в окно тоже как буфер:
BOOL SetWindowText(
   HWND hWnd, // handle of window or control
   LPCTSTR lpString  // address of string
  );
Remarks

The SetWindowText function causes a WM_SETTEXT message to be sent to the specified window or control. If the window is a list box control created with the WS_CAPTION style, however, SetWindowText sets the text for the control, not for the list box entries.


 
Бином Ньютоныч   (2004-08-10 17:22) [12]

IsWindowUnicode?



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

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

Наверх




Память: 0.47 MB
Время: 0.034 c
14-1094591020
aga
2004-09-08 01:03
2004.09.26
пахнет рекламой, но всё же


4-1092211955
Yurik
2004-08-11 12:12
2004.09.26
ListView с возможностью отображения больших картинок


3-1093431748
lehich
2004-08-25 15:02
2004.09.26
ADOQuery подскажите plz


14-1094731238
Vlad Oshin
2004-09-09 16:00
2004.09.26
Сайт BlackMan a?


1-1095074202
kolos_rus
2004-09-13 15:16
2004.09.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
Английский Французский Немецкий Итальянский Португальский Русский Испанский