Einzelnen Beitrag anzeigen

Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#1

SHQueryRecycleBin: mysteriöses Verhalten

  Alt 12. Jun 2008, 22:01
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
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat