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

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.043 c
15-1172460338
Slider007
2007-02-26 06:25
2007.03.25
С днем рождения ! 24 февраля


1-1170365613
Ольчик
2007-02-02 00:33
2007.03.25
Проблема с файлами DEL1.MB,DEL2.MB...


2-1172905502
Roman_S
2007-03-03 10:05
2007.03.25
Необходимо очистить директорию


15-1171744096
Ne-Ld
2007-02-17 23:28
2007.03.25
Играю в датаминера. Главный вопрос - откуда брать пригодные


2-1173013456
VitAngel
2007-03-04 16:04
2007.03.25
Переход на новую страницу