Einzelnen Beitrag anzeigen

Der schöne Günther

Registriert seit: 6. Mär 2013
6.114 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

TShellChangeNotifier ist ziemlich kaputt, oder?

  Alt 2. Apr 2014, 13:08
Delphi-Version: XE5
Die nett gemeinte TShellChangeNotifier -Komponente welche mittels (einzigem) onChange-Ereignis mitteilen soll, dass sich etwas in einem Verzeichnis geändert hat (z.B. neue Datei angelegt, Datei gelöscht, ...).

In älteren Delphi-Versionen schien es standardmäßig unter "Samples" dabei zu sein, mittlerweile scheint man die Komponente nachinstallieren zu müssen (Ordner \Samples\Delphi\VCL\ShellControls). Aber das Ding ist voller Fehler, oder?
  • Der TShellChangeThread prüft anfangs die Rückgabe einer WinAPI-Methode auf ERROR_INVALID_HANDLE. Richtig wäre allerdings INVALID_HANDLE_VALUE. Damit wird er im folgenden mit einem ungültigen Handle arbeiten
  • Der TShellChangeThread hat übrigens FreeOnTerminate = True . Der Destruktor von TShellChangeNotifier beendet den Thread trotzdem mit FThread.Terminate() was natürlich zu Fehlern führt wenn der Thread sich selbst schon freigegeben hat
  • Existiert das zu beobachtende Verzeichnis nicht vom Startweg, beendet sich der Thread und geht nie wieder an. Damit bekommt man nie wieder etwas mit wenn jemand bsp. das Verzeichnis temporär umbenennt oder löscht.
  • Abgesehen von Speicherlecks

Wollte ich nur mal gesagt haben. Nett gemeint, aber die Komponente ist wirklich im Eimer
  Mit Zitat antworten Zitat