Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi TShellChangeNotifier ist ziemlich kaputt, oder? (https://www.delphipraxis.net/179792-tshellchangenotifier-ist-ziemlich-kaputt-oder.html)

Der schöne Günther 2. Apr 2014 13:08

Delphi-Version: XE5

TShellChangeNotifier ist ziemlich kaputt, oder?
 
Die nett gemeinte
Delphi-Quellcode:
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
    Delphi-Quellcode:
    FreeOnTerminate = True
    . Der Destruktor von TShellChangeNotifier beendet den Thread trotzdem mit
    Delphi-Quellcode:
    FThread.Terminate()
    was natürlich zu Fehlern führt wenn der Thread sich selbst schon freigegeben hat :cheers:
  • 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 :oops:

himitsu 2. Apr 2014 13:17

AW: TShellChangeNotifier ist ziemlich kaputt, oder?
 
Ich wusste nichtmal, daß es das im Delphi schon gibt ... gibt ja genug andere Implementationen, oder selber machen. :angel:

Du kannst dir zwar eine aktuelle Version der Beispiele besorgen und schauen, ob der Fehler schon weg ist, denn diese sind via SVN freigegeben.
http://docwiki.embarcadero.com/CodeE...5/en/Main_Page

Der schöne Günther 3. Apr 2014 10:07

AW: TShellChangeNotifier ist ziemlich kaputt, oder?
 
Zitat:

Zitat von himitsu (Beitrag 1254391)
gibt ja genug andere Implementationen

Hast du eine Empfehlung?


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz