![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
А как-бы мне строку, введенную в 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.