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