Главная страница
    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.055 c
2-1172750857
Sapos
2007-03-01 15:07
2007.03.25
Поиск в БД


2-1173020828
kop
2007-03-04 18:07
2007.03.25
DataPump


6-1160139325
urdolphin
2006-10-06 16:55
2007.03.25
Утечка памяти TServerSocket и TClientSocket


15-1172460498
Slider007
2007-02-26 06:28
2007.03.25
С днем рождения ! 26 февраля


9-1145910748
Sinistral
2006-04-25 00:32
2007.03.25
Работа с TCanvas





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский