Форум: "Основная";
Текущий архив: 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.007 c