Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Verzeichnisüberwachung mit TDirectoryWatcherBuilder (https://www.delphipraxis.net/209105-verzeichnisueberwachung-mit-tdirectorywatcherbuilder.html)

slemke76 26. Okt 2021 21:13

Verzeichnisüberwachung mit TDirectoryWatcherBuilder
 
Hallo zusammen,

ich würde gerne ein Verzeichnis überwachen und bin gerade dabei, ein wenig Prototyping zu machen.

Während ich mit den Komponenten von Cromis auf Anhieb geklappt hat, stehe ich offensichtlich mit den Komponenten von Wosi (https://github.com/Wosi/DirectoryWatcher) auf Kriegsfuß...

Ich habe mir eine (eigene kleine) Demo als VCL zusammengeschoben, die an diversen Fehlern innerhalb der DirectoryWatcherBuilder.pas (aus dem git Repo) hängen bleibt:
- Bezeichner erwartet, aber 'CLASS' gefunden
- "Deklaration von 'New' unterscheidet sich von vorheriger Deklaration
- diverse Folgefehler (vermute ich)

Hier die Stelle aus DirectoryWatcherBuilder.pas, an der es hängt - sowohl unter XE8 als auch unter 10.4 getestet:
Delphi-Quellcode:
unit DirectoryWatcherBuilder;
[...]
class function TDirectoryWatcherBuilder.New: IDirectoryWatcherBuilder;
begin
  Result := TDirectoryWatcherBuilder.Create;
end;
Mein Sample-Code
Delphi-Quellcode:
procedure TfMain.btnStartClick(Sender: TObject);
begin
  DirectoryWatcher := TDirectoryWatcherBuilder
                        .New
                        .WatchDirectory(eDirectoryName.Text)
                        .Recursively(cbWatchSubdirectories.Checked)
                        .OnChangeTrigger(OnFileEvent)
                        .Build;

end;

Ich steh irgendwie auf dem Schlauch, kann mir jemand "aufs Pferd helfen" ? Danke...

Sebastian

blawen 26. Okt 2021 22:23

AW: Verzeichnisüberwachung mit TDirectoryWatcherBuilder
 
Zur besagten Komponente habe ich keine Antwort.

Als Typ kann ich Dir nur das Stichwort ReadDirectoryChangesW mitgeben. Dazu findest Du hier im Forum ein paar Tipps.
Allenfalls kannst Du das gewünschte Verhalten relativ einfach erreichen.

jaenicke 27. Okt 2021 05:55

AW: Verzeichnisüberwachung mit TDirectoryWatcherBuilder
 
Die Komponente ist vor allem für Lazarus geschrieben. Deshalb wird dort auf das Define WINDOWS geprüft, aber unter Delphi wäre es MSWINDOWS. Dadurch ist die type-Sektion über dem Fehler leer. Entweder du fügst in der Unit DirectoryWatcherBuilder auch noch ein IFDEF für MSWINDOWS hinzu oder veroderst es entsprechend oder du packst ganz oben das hin:
Delphi-Quellcode:
{$IFDEF MSWINDOWS}
{$DEFINE WINDOWS}
{$ENDIF}

slemke76 30. Okt 2021 18:20

AW: Verzeichnisüberwachung mit TDirectoryWatcherBuilder
 
Hallo zusammen,

vielen Dank für eure Antworten!

Zitat:

Zitat von blawen (Beitrag 1496660)
[...] das Stichwort ReadDirectoryChangesW mitgeben.

Ja, darüber bin ich hier schon mehrfach gestoplert und habe auch eine Demo mit den Cromis-Komponenten gefunden, die auch bereits läuft. Die nutzt auch ReadDirectoryChangesW.

Zitat:

Zitat von jaenicke (Beitrag 1496662)
Entweder du fügst in der Unit DirectoryWatcherBuilder auch noch ein IFDEF für MSWINDOWS hinzu oder veroderst es entsprechend oder du packst ganz oben das hin[...]

Danke für den Input :thumb::thumb:. Ich habe die Units entsprechend angepasst und damit kommt ich jetzt auch einen Schritt weiter.

Zitat:

Zitat von jaenicke (Beitrag 1496662)
Die Komponente ist vor allem für Lazarus geschrieben.

Ich bin mir gar nicht sicher, ob ich die unter Delphi überhaupt vernünftig ans laufen bekomme - ich finde die erst einmal Charmant, weil die auch Linux und MacOS abdecken.

Aber - auch wenn das jetzt vom Thread Thema abweicht - mir fehlt jetzt für Delphi die Unit "FGL" - das sind wohl "Free Pascal Generic Lists".
Gibt es dafür einen "Ersatz" in Delphi (nichts gefunden...?) oder müsste man das ganze komplett für Delphi anpassen?

Update:
Ich habe das hier https://sourceforge.net/projects/fre.../Source/3.2.2/ gefunden, aber dumme Frage - wie binde ich .pp Units in Delphi ein? Stehe schon wieder auf dem Schlauch...
Bei dem Ding lerne ich richtig was :-)

Schönes WE!
Sebastian

Alter Mann 30. Okt 2021 19:49

AW: Verzeichnisüberwachung mit TDirectoryWatcherBuilder
 
Zitat:

wie binde ich .pp Units
??? in *.pas umbennen?

vorher in einen seperaten(projekt-gültigen) Ordner kopieren.

jaenicke 30. Okt 2021 20:47

AW: Verzeichnisüberwachung mit TDirectoryWatcherBuilder
 
Liste der Anhänge anzeigen (Anzahl: 1)
Zitat:

Zitat von slemke76 (Beitrag 1496842)
Ich bin mir gar nicht sicher, ob ich die unter Delphi überhaupt vernünftig ans laufen bekomme - ich finde die erst einmal Charmant, weil die auch Linux und MacOS abdecken.

Aber - auch wenn das jetzt vom Thread Thema abweicht - mir fehlt jetzt für Delphi die Unit "FGL" - das sind wohl "Free Pascal Generic Lists".
Gibt es dafür einen "Ersatz" in Delphi (nichts gefunden...?) oder müsste man das ganze komplett für Delphi anpassen?

Das macht anders keinen Sinn. Ja, das musst du anpassen.

Ich habe es einmal so weit angepasst, dass es kompiliert (aber nicht getestet). Nicht schön, das kann man besser für beide Compiler machen, aber ich kann da jetzt nicht so viel schauen. Vor allem müsste ich es dann auch mal unter Lazarus testen, das kann ich gerade nicht.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:57 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