۱۶-اسفند-۱۳۸۶, ۲۳:۰۱:۲۴
صفحهها: 1 2
۱۷-اسفند-۱۳۸۶, ۰۹:۳۶:۴۳
سلام به همه
با کمک دوستان این کد تو دلفی آماده شد
شاید بشه متغیر Temp رو حذف کرد ولی من تو دلفی آماتور هستم و بلد نیستم
نکته اینجاست که طول pszPath باید برابر MAX_PATH یعنی 260 باشه.
شما لطف کنین کد رو ساده تر کنید.
با کمک دوستان این کد تو دلفی آماده شد
شاید بشه متغیر Temp رو حذف کرد ولی من تو دلفی آماتور هستم و بلد نیستم
نکته اینجاست که طول pszPath باید برابر MAX_PATH یعنی 260 باشه.
شما لطف کنین کد رو ساده تر کنید.
function TForm1.func1: PAnsiChar;
var
ppidl: PItemIDList;
pszPath: PAnsiChar;
bln: Boolean;
Temp: String;
begin
SetLength(Temp, 260);
Result := PChar(Temp);
SHGetSpecialFolderLocation(Self.Handle, CSIDL_PERSONAL, ppidl);
bln := SHGetPathFromIDList(ppidl, Result);
if not bln then Result := '';
end;
var
ppidl: PItemIDList;
pszPath: PAnsiChar;
bln: Boolean;
Temp: String;
begin
SetLength(Temp, 260);
Result := PChar(Temp);
SHGetSpecialFolderLocation(Self.Handle, CSIDL_PERSONAL, ppidl);
bln := SHGetPathFromIDList(ppidl, Result);
if not bln then Result := '';
end;
۱۷-اسفند-۱۳۸۶, ۱۱:۳۵:۴۸
میتونی بجای استفاده از pchar و تعیین طول برای اون از یه ارایه از نوع char استفاده کنیموفق باشی
کد:
procedure TForm1.Button1Click(Sender: TObject);
var
pid: PItemIDList;
a:array[0..256]of char;
begin
SHGetSpecialFolderLocation(form1.Handle,CSIDL_DESKTOP,pid);
SHGetPathFromIDList(pid,a);
edit1.Text:=a;
end;
صفحهها: 1 2