Guten Abend,
ich habe bei der oben genannten Funktion ein komisches Verhalten festgestellt, dass ich mir nicht erklären kann, zunächst einmal der Quellcode:
Delphi-Quellcode:
if SHQueryRecycleBin('', RecycleBinInfo) = S_OK then
begin
Result.RecycleItems := IntToStr(RecycleBinInfo.i64NumItems);
Result.RecycleSize := GetStringSize(RecycleBinInfo.i64Size, 0);
end
else
begin
Result.RecycleItems := 'kein Papierkorb vorhanden';
Result.RecycleSize := 'kein Papierkorb vorhanden';
end;
...
...
// ProfilName
Result.ProfilName := GetMinimizedName(Main.ProfilName);
// ProfilSize
Result.ProfilSize := GetStringSize(GetDirSize(Main.ProfilName), 0);
// TempName
Result.TempName := GetMinimizedName(Main.TempName);
// TempSize
Result.TempSize := GetStringSize(GetDirSize(Main.TempName), 0);
Zur weiteren Information: GetDirSize, GetStringSize und GetMinimizedName sind eigene Funktionen die eine Verzeichnisgröße in Int64 ermittelt, eine Verzeichnisgröße in einem verständlichen String zurück gibt und einen zulangen String bei einem Slash abschneidet.
Das Problem welches besteht ist, dass so wie der Code hier steht, SHQueryRecycleBin nicht S_OK zurückgibt. Kommentiere ich "ProfilName und ProfilSize" oder "TempName und TempSize" aus, geht es.
Warum aber nicht so wie es ist? Die SHQueryRecycleBin-Funktion wird doch vorher aufgerufen und hat nichts mit den nachfolgenden Anweisungen zu tun.
Was passiert intern? Es hat den Anschein, als ob erst die 4 anderen Anweisungen verarbeitet werden und dann SHQueryRecycleBin, was irgendwie zu einer falschen Rückgabe führt.
Wenn mir jemand helfen kann, wär ich froh.
Danke
Mazel