Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

А как-бы мне строку, введенную в edit преобразовать в unicode??? [D6, Win2k]


Cker ©   (2002-10-12 23:58:00) 

сабж


Smithson   (2002-10-17 14:20:00) [1]

Ну и правильно!
Инспектор при просмотре правильно интерпретирует WideChar.
Если очень надо - сбрось Dest в файл и посмотри его фаром - все увидишь.


Cker   (2002-10-17 14:12:00) [2]

>Smithson
Согласен.
На каждый символ по два байта: кодовая страница и непосредственно код символа.
Пробую вариант:

procedure TForm1.Button1Click(Sender: TObject);
var Dest : array[1..9] of WideChar;
begin
StringToWideChar("Проверка", @Dest, 9);
end;

Получаю в Dest: "П", "р", "o" и т. д.
???


Игорь Шевченко   (2002-10-17 11:10:00) [3]

Кстати, версия unicode - одна.


Smithson   (2002-10-17 11:04:00) [4]

Товарищи, не путайте слона и трепетную лань!
Unicode в HTML - это %HEX кодировка символов.
Unicode в Delphi - это многобайтное представление символов. Для
этого идут функции WideString.


int64   (2002-10-17 10:23:00) [5]

Вот такой вариант есть.

function Unicode(const S: string): string;
var
I: Integer;
Hex: string;
begin
for I := 1 to Length(S) do

case S[i] of
" ": result := Result + "+";
"A".."Z", "a".."z", "*", "@", ".", "_", "-",
"0".."9", "$", "!", """", "(", ")":
result := Result + s[i];
else
begin
Hex := IntToHex(ord(S[i]), 2);
if Length(Hex) = 2 then Result := Result + "%" + Hex else
Result := Result + "%0" + hex;
end;
end;
end;


Cker   (2002-10-16 23:19:00) [6]

мммммммм
help


Cker   (2002-10-14 22:46:00) [7]

А разве это Unicode?????
Я просматриваю Dest и вижу массив букв ("П", "р", "о"........)
А вроде-ж должно быть что-то типа #1010 для каждой буквы???


Вася Пупкин   (2002-10-14 02:55:00) [8]

Правильно вылетает....Dest - Указатель на буфер...а где буфер-то ? -)
Хотя бы так:
procedure TForm1.Button1Click(Sender: TObject);
var Dest : array[1..9] of WideChar;
begin
StringToWideChar("Проверка", @Dest, 9);
end;


Cker   (2002-10-13 23:16:00) [9]

procedure TForm1.Button1Click(Sender: TObject);
var Dest : PWideChar;
i : Integer;
begin
StringToWideChar("Проверка", Dest, i);
end;

вылетает фатальная ошибка:"Access violation at address........."
???


Cker   (2002-10-13 23:08:00) [10]

А вотвопрос: имеется несколько версий unicode. Будет-ли такой вариант работать для всех случаев?


Anatoly P   (2002-10-13 00:43:00) [11]

Функция StringToWideChar(
const Source: string;
Dest: PWideChar;
DestSize: Integer ): PWideChar;

Функция помещает в буфер DestSize-1 символ и символ окончания строки. В качестве результата функция возвращает указатель на буфер Dest.



Наверх

Титульная страница Поиск, карта сайта Написать письмо