Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > pWideChar в String


Автор: sniron 5.5.2004, 18:29
Как перевести тип pWideChar в String?

Автор: sniron 5.5.2004, 20:34
Вообщем задача такая:

ActiveDesktop.SetWallpaper('c:\pic.jpg', 0);
Вместо c:\pic.jpg должна стоять переменная типа String;

Например:
ActiveDesktop.SetWallpaper(s, 0);
// s : string

Автор: Alex 5.5.2004, 21:07
Вообще-то функция SetWallpaper в качестве входного параметра принимает данные в виде pWideChar, так что вам нужно превратить String в pWideChar. Делается это так:

Код
function StringToPWide(sStr: String): PWideChar;
// Преобразование String в PWideChar
var
 pw : PWideChar;
 iSize : integer;
 iNewSize: integer;
begin
 iSize:= Length(sStr) + 1;
 iNewSize:= iSize * 2;
 pw:= AllocMem(iNewSize);
 MultiByteToWideChar(CP_ACP, 0, PChar(sStr), iSize, pw, iNewSize);
 Result:= pw;
end;

Автор: sniron 5.5.2004, 22:15
Все работает! Спасибо. Вот только одно но, pWideChar распознает только полный путь например 'c:\temp\1.jpg' а хотелось бы что бы он искал картинку в текущем каталоге, если указано просто '1.jpg'.

Автор: Alex 5.5.2004, 22:45
ExtractFilePath(ParamStr(0)) - папка программы

Автор: sniron 5.5.2004, 22:56
Спасибо

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)