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

Вниз

Как преобразовать строку в 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
14-31429
Andrey
2003-06-18 16:31
2003.07.10
Стандартный способ передачи параметров в Dll


14-31493
leonidus
2003-06-07 13:40
2003.07.10
Запуск моей программы из контекстного меню IE, как в ReGet`е


14-31497
aves
2003-06-24 01:44
2003.07.10
Как программно изм-ть RUS версию Windows на ENG и наоборот


4-31564
Птущенко Денис
2003-05-09 08:38
2003.07.10
Thread


7-31528
Kusma
2003-04-21 16:29
2003.07.10
автотарт