Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.04 c
6-1160035146
mlm68
2006-10-05 11:59
2007.03.25
Почтовый робот


2-1172740254
Riply
2007-03-01 12:10
2007.03.25
Утечка памяти при передаче нити дин. массива как параметра.


15-1172502904
IMHO
2007-02-26 18:15
2007.03.25
Посоветуйте утилиту для Интернета


15-1172522655
Kerk
2007-02-26 23:44
2007.03.25
Работа


15-1173040286
ArtemESC
2007-03-04 23:31
2007.03.25
PHP





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский