Thema: Delphi GetSpecialFolder

Einzelnen Beitrag anzeigen

Mike_on_Tour

Registriert seit: 16. Aug 2007
195 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

GetSpecialFolder

  Alt 27. Mär 2008, 10:37
Hallo,

ich möchte in einem Programm den Systempfad für "Dokumente für alle Benutzer ermitteln". Das mache ich mit der Funktion "GetSpecialFolder" und CSIDL_COMMON_DOCUMENTS als Parameter.

Delphi-Quellcode:
function GetSpecialFolder (CSIDL: Integer) : String;
var
  ItemIDList: PItemIDList;
  sFolderPath : String;
  iSystemFolder : Integer;
  pMalloc : IMalloc;
begin
  pMalloc := nil;
  sFolderPath := '';
  SHGetMalloc (pMalloc);
  if (pMalloc = nil)
    then begin
      Exit;
    end;
  try
    iSystemFolder := CSIDL;
    if (SUCCEEDED (SHGetSpecialFolderLocation (0, iSystemFolder, ItemIDList)))
      then begin
        SetLength (sFolderPath, MAX_PATH);
        if (SHGetPathFromIDList(ItemIDList, PChar(sFolderPath)))
          then begin
            SetLength (sFolderPath, Length(PChar(sFolderPath)));
          end;
      end;
  finally
    Result := sFolderPath;
    pMalloc.Free(ItemIDList);
  end;
end;
Prinzipiell funktioniert das auch ganz gut. Ich habe aber jetzt den Fall, daß das Ergebnis der Funktion ein leerer String ist. Meine Vermutung ist, daß "pMalloc = nil" ist und die Funktion beendet wird. Aber warum ?

Was könnte die Ursache sein und wie kann ich darauf reagieren ?

mfG

Mike
Programmieren ist wie das Wandeln auf dem schmalen Pfad zwischen Wahnsinn und Intelligenz.
  Mit Zitat antworten Zitat