Verzeichnis überwachen

braunbär
Beiträge: 463
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 3.6, FPC 3.2.2
CPU-Target: 64Bit
Wohnort: Wien

Verzeichnis überwachen

Beitrag von braunbär »

Ich habe im Kopf, dass es irgendwie möglich ist, ein Verzeichnis "überwachen" zu lassen und von Windows verständigt zu werden, wenn sich in dem Verzeichnis etwas geändert hat. Hab dazu aber nichts gefunden.

Warf
Beiträge: 2121
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Verzeichnis überwachen

Beitrag von Warf »

Das sind so genannte Filesystem watches, schnelles googlen hat mir auf Windows diese API gefunden: https://learn.microsoft.com/de-de/windo ... dfrom=MSDN

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6780
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Verzeichnis überwachen

Beitrag von af0815 »

Wenn man länger nach filesystem Watchers sucht ,findet man auch Komponenten dazu, meistens Delphi, aber auch Lazarus.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1647
Registriert: Do 9. Jun 2011, 09:42
OS, Lazarus, FPC: Lazarus Fixes FPC Stable
CPU-Target: 32/64Bit
Wohnort: Echzell

Re: Verzeichnis überwachen

Beitrag von fliegermichl »

FindFirstChangeNotification und WaitForSingleObject mit entsprechenden Parametern.

Benutzeravatar
Jorg3000
Lazarusforum e. V.
Beiträge: 364
Registriert: So 10. Okt 2021, 10:24
OS, Lazarus, FPC: Win64
Wohnort: NRW

Re: Verzeichnis überwachen

Beitrag von Jorg3000 »

Dazu gibt's "DirectoryWatcher" auf github
https://github.com/Wosi/DirectoryWatcher

This is an abstraction layer for
- ReadDirectoryChangesW on Windows
- FSEvent on Mac OS
- inotify on Linux

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6780
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Verzeichnis überwachen

Beitrag von af0815 »

Jorg3000 hat geschrieben: Sa 23. Nov 2024, 16:11 Dazu gibt's "DirectoryWatcher" auf github
https://github.com/Wosi/DirectoryWatcher

This is an abstraction layer for
- ReadDirectoryChangesW on Windows
- FSEvent on Mac OS
- inotify on Linux
Ah, hat wer die komplett verschiedenen APIs mal abstrahiert. Habe mich vor Jahren damit gespielt, da waren aber die Mechanismen so unterschiedlich das ich es nicht weiter verfolgt habe. Gut zu wissen. Danke für die Info.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

braunbär
Beiträge: 463
Registriert: Do 8. Jun 2017, 18:21
OS, Lazarus, FPC: Windows 10 64bit, Lazarus 3.6, FPC 3.2.2
CPU-Target: 64Bit
Wohnort: Wien

Re: Verzeichnis überwachen

Beitrag von braunbär »

Jorg3000 hat geschrieben: Sa 23. Nov 2024, 16:11 Dazu gibt's "DirectoryWatcher" auf github
https://github.com/Wosi/DirectoryWatcher

This is an abstraction layer for
- ReadDirectoryChangesW on Windows
- FSEvent on Mac OS
- inotify on Linux
Danke!

Wahnsinn, mit so einer komfortablen fix - und fertigen Unit habe ich nicht gerechnet. 7 Jahre alt - ich habe vor ein paar Jahren einmal nach so etwas gesucht, sicher keine 7 Jahre her, aber das habe ich damals nicht gefunden :)

Heruntergeladen, Demoprogramm kompiliert und funktioniert auf Anhieb :D

Meridian
Beiträge: 42
Registriert: Di 22. Feb 2022, 12:19
OS, Lazarus, FPC: Window 11
CPU-Target: 64Bit
Wohnort: Cloppenburg

Re: Verzeichnis überwachen

Beitrag von Meridian »

Hallo,

hat jemand noch ein weiteres kleines Beispielprogramm, wie man den DirectoryWatcher einsetzt?

Vielen Dank.

Gruß aus Norddeutschland.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6780
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Verzeichnis überwachen

Beitrag von af0815 »

Meridian hat geschrieben: Do 13. Feb 2025, 13:58 Hallo,

hat jemand noch ein weiteres kleines Beispielprogramm, wie man den DirectoryWatcher einsetzt?

Vielen Dank.

Gruß aus Norddeutschland.
Das Demo was beim DirectoryWatcher dabei ist, ist nicht genug ? Oder was fehlt dir dort ?
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Mathias
Beiträge: 6918
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Verzeichnis überwachen

Beitrag von Mathias »

Zu diesem Thema fällt mir auch noch was ein.
Der Datei Manger Nemo von Mint verhält sich das auch merkwürdig.
Ich habe meine Daten alle aus einer NAS, welche mit NFS angebunden ist. Jetzt das merkwürdigem wen ich mit Lazarus etwas kompiliere, verschwinden einige Dateien in der Liste. Oder wen ich h2pas ausrufe, dann ist die *.pp nicht ersichtlich. Erst beim aktualisieren der Ansicht mit F5 kommt alles richtig.
Aber das komisch, ich habe ein Hilfsprogramm mit einem Memo. Und wen dort Memo.SafeToFile kommt, die dort gespeicherte Datei ist sofort ersichtlich. Wieso auch immer.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Meridian
Beiträge: 42
Registriert: Di 22. Feb 2022, 12:19
OS, Lazarus, FPC: Window 11
CPU-Target: 64Bit
Wohnort: Cloppenburg

Re: Verzeichnis überwachen

Beitrag von Meridian »

af0815 hat geschrieben: Do 13. Feb 2025, 15:17
Meridian hat geschrieben: Do 13. Feb 2025, 13:58 Hallo,

hat jemand noch ein weiteres kleines Beispielprogramm, wie man den DirectoryWatcher einsetzt?

Vielen Dank.

Gruß aus Norddeutschland.
Das Demo was beim DirectoryWatcher dabei ist, ist nicht genug ? Oder was fehlt dir dort ?
Der DirectoryWatcher ist grundsätzlich klasse. Habe aber auch weiterprobiert, damit die SubFolder überwacht werden. Ich weiß aber nicht, wie man den Parameter richtig setzt.

Bin nur Hobby-"Programmierer" 8) und benötige die Folder-Überwachung in einem Programm mit Formularen...
Kann mir jemand helfen?

Vielen Dank dafür, wenn mir jemand weiterhilft...

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6780
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Re: Verzeichnis überwachen

Beitrag von af0815 »

Hast du versucht das Beispiel mit dem Parameter recursive zu starten ? Weil das sollte der Parameter sein, der eine Überwachung von Subfoldern aktiviert.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

Meridian
Beiträge: 42
Registriert: Di 22. Feb 2022, 12:19
OS, Lazarus, FPC: Window 11
CPU-Target: 64Bit
Wohnort: Cloppenburg

Re: Verzeichnis überwachen

Beitrag von Meridian »

Hallo,

das mit dem Parameter recursive hat bei mir nicht funktioniert. :?:

Ich habe in der procedure TDirectoryWatcherDemo.DoRun etwas geändert...

Code: Alles auswählen

procedure TDirectoryWatcherDemo.DoRun;
var
  FolderToWatch: String;
  WatchSubFolders: Boolean;
  DirectoryWatcher: IDirectoryWatcher;
begin
  FolderToWatch := GetOptionValue('folder');
  if FolderToWatch = '' then
    FolderToWatch := ExtractFileDir(ParamStr(0));

  //WatchSubFolders := [b][i]HasOption('r', 'recursive')[/i][/b];   // Original-Code...
  // geändert in ...
  WatchSubFolders := [b][i]true[/i][/b];   
....
Damit werden auch die Subfolder überwacht.

Dennoch benötige ich diese Überwachung in einem Programm mit Formularen und es wäre klasse, wenn die Ereignisse in ein Memo geschrieben werden. Das habe ich bisher nicht geschaftt. :oops:

Gruß aus Niedersachsen...
Zuletzt geändert von m.fuchs am Di 18. Mär 2025, 21:32, insgesamt 1-mal geändert.
Grund: Syntaxhighlighting

PascalDragon
Beiträge: 955
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Verzeichnis überwachen

Beitrag von PascalDragon »

Meridian hat geschrieben: Fr 14. Mär 2025, 10:25 Ich habe in der procedure TDirectoryWatcherDemo.DoRun etwas geändert...
Bitte nutze [ code ][ /code ] (ohne Leerzeichen), damit es besser aussieht.
FPC Compiler Entwickler

Meridian
Beiträge: 42
Registriert: Di 22. Feb 2022, 12:19
OS, Lazarus, FPC: Window 11
CPU-Target: 64Bit
Wohnort: Cloppenburg

Re: Verzeichnis überwachen

Beitrag von Meridian »

Moin zusammen,

bin erneut an dem Thema "Verzeichnis überwachen" dran.
Mir gefällt "DirctoryWatcher" grundsätzlich richtig gut, weil Datei- und Verzeichnisänderungen wie hinzugefügt, gelöscht und geändert erkannt werden inkl. der Subfolder.

-------------
Dazu gibt's "DirectoryWatcher" auf github
https://github.com/Wosi/DirectoryWatcher
-------------

Ich kann leider aus der Konsolenanwendung keine grafische Anwendung machen. Habe auch mit anderen Komponenten probiert, die immer nie ganz vollständig sind.

Vielleicht hat ja jemand Lust dazu, mir zu helfen.

Was mir auch sehr gut gefällt, ist die Komponente "ATFileNotification" bzw. die Demo, die allerding mit Delphi geschrieben wurde und ich auch das nicht umgebogen bekomme. Das habe ich bei https://torry.net/components/files-and- ... ification/ gefunden.

Ich sag schon mal danke für die Hilfe, die ihr mir zukommen lasst.

Gruß Helmut
Dateianhänge
ScreenShot.png
ScreenShot.png (13.31 KiB) 3145 mal betrachtet

Antworten