Форум: "Начинающим";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];
ВнизWideString - > UnicodeString Найти похожие ветки
← →
gosha73 (2007-03-04 23:38) [0]Приветствую друзья.
Подскажите пожалуйста каким образом получить содержимое памяти WideString в более безопасном варианте чем мой:
var wStr : WideString;
s : String;
begin
wStr := "Ю";
s := PChar(wStr); вот здесь появляется warning
...
end;
Мне необходимо заполучить в S именно двухбайтовые значения, которые хранит в памяти wStr для своих символов. Моим методом все работает, но warning понятно почему появляется. Может есть более грамотная функция, которая позволит получить содержимое WideString в обычный String в том двухбайтовом виде как оно в памяти лежит?
← →
palva © (2007-03-04 23:47) [1]Метод не очень корректный. Например, если у вас в строке попадется цифра, то строка скопируется частично, поскольку копирование натолкнется на нулевой байт, которым все и кончится.
Стандартной функции быть не должно, поскольку процедура уж очень нестандартная.
По моему, корректно будет установить нужную длину для s, а потом применить функцию Move (с явным указанием длины копирования)
← →
gosha73 (2007-03-05 00:11) [2]Я к сожалению не особо знаю как пользоваться Move.
Вот так вот пробую, но что-то на выходе полная ерунда...
Может знаете как правильно?
SetLength(s, SizeOf(wStr));
Move(Pointer(wStr), s[1], Length(s));
← →
palva © (2007-03-05 13:07) [3]
{$APPTYPE CONSOLE}
var
wStr: WideString;
s : String;
len, i: Integer;
begin
wStr := "123Ю456";
len:= Length(wStr) * 2;
SetLength(s, len);
Move(wStr[1], s[1], len);
// а теперь напечатаем:
for i:=1 to len do Write(Ord(s[i]):3);
WriteLn; // 49 0 50 0 51 0 46 4 52 0 53 0 54 0
ReadLn;
end.
← →
Desdechado © (2007-03-05 13:19) [4]А чем тебя не устраивает WideString ?
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.03.25;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.035 c