Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Pfad für "Eigene Bilder" (https://www.delphipraxis.net/67648-pfad-fuer-eigene-bilder.html)

marlem 18. Apr 2006 07:58


Pfad für "Eigene Bilder"
 
Hallo,

ich suche eine zuverlässige Lösung, wie ich auf jedem (Windows)Betriebssystem den Pfad für "Eigene Bilder" herausfinden kann!
wer weiss rat?

Sharky 18. Apr 2006 08:05

Re: Pfad für "Eigene Bilder"
 
Hai marlem,

test doch mal diese Methode:
Delphi-Quellcode:
uses
  ShlObj;

const
  CSIDL_MYPICTURES = $0027;

function GetShellFolder(CSIDL: Integer): string;
var
  pidl: PItemIdList;
  FolderPath: string;
  SystemFolder: Integer;
begin
  SystemFolder := CSIDL;
  if SUCCEEDED(SHGetSpecialFolderLocation(0, SystemFolder, pidl)) then
  begin
    SetLength(FolderPath, max_path);
    if SHGetPathFromIDList(pidl, Pchar(FolderPath)) then
    begin
      SetLength(FolderPath, strlen(Pchar(FolderPath)));
    end;
  end;
  Result := FolderPath;
end;


procedure TDemoForm.Button1Click(Sender: TObject);
begin
  ShowMessage(GetShellFolder(CSIDL_MYPICTURES));
end;

Gollum 18. Apr 2006 08:10

Re: Pfad für "Eigene Bilder"
 
Hallo,

folgendes funktioniert unter W2K und XP:
Delphi-Quellcode:
uses
  SHFolders, SysUtils;

...
// aID: CSIDL_PERSONAL  = My Documents
//      CSIDL_MYPICTURES = My Pictures

function GetPfad(aID:Integer):String;
var p:PChar;
begin
  p:=nil;
  try
    p:=AllocMem(MAX_PATH);
    if (SHGetFolderPath(0, aID, 0, 0, p)=S_OK) then Result:=p
      else Result:=GetCurrentDir;
    Result:=IncludeTrailingPathDelimiter(Result);
  finally
    FreeMem(p);
  end; // try
end; // GetPfad

...
var bildPfad:String;
...
bildPfad:=GetPfad(CSIDL_MYPICTURES);
...

marlem 18. Apr 2006 08:51

Re: Pfad für "Eigene Bilder"
 
@Sharky
sieht gut aus danke!

Robert Marquardt 18. Apr 2006 08:56

Re: Pfad für "Eigene Bilder"
 
Unter jeder Windowsversion geht das nicht, da nicht jede Windowsversion diesen Pfad hat.
AFAIK erst ab Win 98 ME.


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:44 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz