Verzeichnis überwachen

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 »

So ein Mist, ich hab doch gestern einen unvollständigen ScreenShot geschickt :shock:
Dateianhänge
ScreenShot.png
ScreenShot.png (25.73 KiB) 9495 mal betrachtet

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1648
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 »

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
Ich habe das mal heruntergeladen. Es kompiliert auch. Aber beim Programmstart bekomme ich eine Access Violation in der Datei DirectoryWatcherThread.Windows.pas in Zeile 129 bei der Anweisung

Code: Alles auswählen

  EventArray[1] := Integer(TermEvent.Handle^);
Ich habe es sowohl mit der 32 als auch 64 Bit Version versucht.
Hat jemand eine Idee woher das kommt?

PascalDragon
Beiträge: 958
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 »

Ich frage mich, wie das im Ansatz funktionieren sollte, da TEvent.Handle das Handle selbst als Pointer (in FPC) oder NativeUInt (in aktuellen Delphis) ist. Da das EventArray einfach nur ein Feld von THandle ist, müsste es eigentlich := THandle(TermEvent.Handle) sein. 🤔
FPC Compiler Entwickler

Benutzeravatar
fliegermichl
Lazarusforum e. V.
Beiträge: 1648
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 »

PascalDragon hat geschrieben: Di 29. Apr 2025, 21:30 Ich frage mich, wie das im Ansatz funktionieren sollte, da TEvent.Handle das Handle selbst als Pointer (in FPC) oder NativeUInt (in aktuellen Delphis) ist. Da das EventArray einfach nur ein Feld von THandle ist, müsste es eigentlich := THandle(TermEvent.Handle) sein. 🤔
Du hast recht. Wenn ich Handle direkt als Integer übertrage, funktioniert es. Weshalb ist das Handle dann aber als Pointer deklariert?

Wenn ich mir TEventObject.Create anschaue, dann wird BasicEventCreate aufgerufen, welches laut der FPC Doku als deprecated eingestuft ist und durch RTLEventCreate ersetzt werden sollte. Dieses liefert aber auch ein PRTLEvent Ergebnis. Wieder ein typenloser Zeiger.

PascalDragon
Beiträge: 958
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 »

fliegermichl hat geschrieben: Mi 30. Apr 2025, 06:34
PascalDragon hat geschrieben: Di 29. Apr 2025, 21:30 Ich frage mich, wie das im Ansatz funktionieren sollte, da TEvent.Handle das Handle selbst als Pointer (in FPC) oder NativeUInt (in aktuellen Delphis) ist. Da das EventArray einfach nur ein Feld von THandle ist, müsste es eigentlich := THandle(TermEvent.Handle) sein. 🤔
Du hast recht. Wenn ich Handle direkt als Integer übertrage, funktioniert es. Weshalb ist das Handle dann aber als Pointer deklariert?
Ich kann grad nicht nachschauen, aber ich glaub das war in älteren Delphi Versionen schon so bis es dort von Pointer auf NativeUInt geändert wurde.
fliegermichl hat geschrieben: Mi 30. Apr 2025, 06:34 Wenn ich mir TEventObject.Create anschaue, dann wird BasicEventCreate aufgerufen, welches laut der FPC Doku als deprecated eingestuft ist und durch RTLEventCreate ersetzt werden sollte. Dieses liefert aber auch ein PRTLEvent Ergebnis. Wieder ein typenloser Zeiger.
Nur weil es für die öffentliche Schnittstelle als deprecated markiert ist, heißt nicht, dass das auch für Interna gilt.
FPC Compiler Entwickler

Antworten