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

Вниз

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

 
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 вся ветка

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

Наверх




Память: 0.49 MB
Время: 0.04 c
1-1094732269
dima_shapkin
2004-09-09 16:17
2004.09.26
Design Time


1-1094674994
redlord
2004-09-09 00:23
2004.09.26
метод free не вызывает destroy


9-1085278109
Максим
2004-05-23 06:08
2004.09.26
Затухание экрана


14-1094131157
KSergey
2004-09-02 17:19
2004.09.26
Стартовая страничка Explorer


9-1083469676
Iraizor
2004-05-02 07:47
2004.09.26
DirectX нужна помощь по поводу заголовочных файлов