Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2003.07.10;
Скачать: [xml.tar.bz2];

Вниз

Как преобразовать строку в PWideString ?   Найти похожие ветки 

 
MegaVolt   (2003-06-26 12:33) [0]

API-шная функция требует LPWSTR это я как понимаю PWideChar. Я пробую преобразовывать так

StringToWideShar(pwc,s,Length(s)*2+1);

Прога вылетает причём не на этой строке а гдето дальше причём переменная pwc может дальше ни где и не исспользоватся. Симптомы похожи на проблемы с памятью значит я не выдели память. пробую так:

SetLength(pwc,Length(s)*2+1);

ругается что не могу я передавать сонстанту :(
Как правильно работать с этим типом???


 
Skier   (2003-06-26 12:38) [1]

Хорошо бы под s память выделить...


 
MegaVolt   (2003-06-26 12:41) [2]

Так s это строка она уже есть например в Edit1.Text


 
Skier   (2003-06-26 12:42) [3]

Мда...
А вроде уже взрослый. :)


 
MegaVolt   (2003-06-26 12:44) [4]

Непонял :(


 
Skier   (2003-06-26 12:45) [5]

Удалено модератором
Примечание: OffTopic


 
icWasya   (2003-06-26 12:46) [6]

попробуй так
var ws:WideString;
pws:PWideChar;
ws:=s;
pws:=PWideChar(@ws[1]);

ApiFunction(pws,...);


 
MMF   (2003-06-26 12:47) [7]

function StringToPWideChar(S: string): PWideChar;
var
OldSize: Integer;
NewSize: Integer;
begin
OldSize := Length(S) + 1;
NewSize := OldSize * 2;
Result := AllocMem(NewSize);
MultiByteToWideChar(CP_ACP, 0, PChar(S), OldSize, Result, NewSize);
end;


 
MegaVolt   (2003-06-26 12:57) [8]

To icWasya:
а где само преобразование в UNICOD происходит? По идее должно получится по 2 символа на 1 символ строки плюс нуль на конце.

To MMF:
Заработало :) Только не понятно почему новый размер вычисляется как (x+1)*2 а не x*2+1.


 
icWasya   (2003-06-26 13:13) [9]

> а где само преобразование ...
посмотри дебагером, какой код стоит за
ws:=s

>почему новый размер вычисляется как (x+1)*2 а не x*2+1.
нулевой символ в конце строки тоже занимает два байта


 
MegaVolt   (2003-06-26 13:29) [10]

Спасибо :)



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2003.07.10;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.009 c
4-31566
Forest
2003-05-11 15:47
2003.07.10
findwindow( tedit , edit1 ) не работает...


14-31445
resheto
2003-06-23 18:10
2003.07.10
Sfx архиватор


14-31437
Mike B.
2003-06-23 13:41
2003.07.10
Поэзия


8-31370
lexa
2003-03-23 17:58
2003.07.10
Как заставить MediaPlayer играть mp3


1-31261
Behemoth
2003-06-26 10:06
2003.07.10
Поможите с модальными формами...





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