![]() |
Auf Dateiänderung reagieren!
Huhu ich mal wieder!
Ich möchte einen Event auslösen sobald eine bestimmte Datei geschrieben/geändert wurde. Mein erster Einfall sieht so aus:
Delphi-Quellcode:
Soderle. Auf meiner Entwicklungsmaschine funktionert das prima, sobald ich die Datei abspeicher kommt die Message.
procedure TFmain.timer_meldungsinhaltTimer(sender: TObject);
//Ein Timer der im 50ms Intervall prüft ob die Datei Meldungsinhalt geändert wurde BEGIN if FileExists(meldungsinhalt) then //existiert das file überhaupt? begin if GetFileLastAccessTime(meldungsinhalt) = now then begin Showmessage('Die Datei wurde geändert!'); end; end; END Dann hab ich das Programm auf dem Zielsystem kopiert und laufen lassen. Von 20 Speicherversuchen der Datei registriert mein Timer vielleicht 2 ... wenn überhaupt. Verstehe ich nicht so ganz. Ich hab das INtervall auch mal auf 1 gesetzt... aber das half auch nicht. Ausserdem mach ich mir das Sorgen um die Performance wenn da jede Millisekunde der Timer rödelt. Nun die Frage: gibt es eine elegandere Methode um auf das Ändern einer Datei zu reagieren als den letzen Dateizugriff? |
Re: Auf Dateiänderung reagieren!
Ja gibt es.
Man kann ein Verzeichnis so überwachen, dass man eine Nachricht bekommt, sobald sich ein Verzeichnis geändert hat. Den Code dazu habe ich allerdings nicht hier. Du müsstest dich also noch bis heute Abend gedulden, dann kann ich ihn dir posten. |
Re: Auf Dateiänderung reagieren!
windows kann das von haus aus.
schau mal im msdn unter "FindFirstChangeNotification" nach. ![]() |
Re: Auf Dateiänderung reagieren!
... wird aber nur bei Windows NT und folgende Betriebssysteme unterstützt. Windows 9x/ME sind da außen vor.
|
Re: Auf Dateiänderung reagieren!
Ernstgemeinte Frage:
Wer benutzt heutzutage noch Win9x/ME? |
Re: Auf Dateiänderung reagieren!
Wir haben in der Firma noch immer Rechner die ein Windows 98 haben und ich kenne auch genügend Kollegen die zu Hause noch Windows 98 nutzen. Auch meinem Vater habe ich relativ spät dazu bewegen können auf 2000 umzusteigen. Es gibt immer Leute und ich werde und will mich nicht mit meiner eigenen Software ausbooten, in dem ich Anwender ausschliesse. Bei speziellen Programmen und Lösungen ok, aber nicht generell oder in einfachen Dingen und Tools.
|
Re: Auf Dateiänderung reagieren!
Gibts durchaus. Vor allem in der Industrie werden noch haufenweise Rechner mit alten Betriebssystemen eingesetzt, hauptsächlich aus Kompatibilitätsgründen, weils für manche exotische Hardware halt keine "aktuellen" Treiber gibt usw. - Übrigens ein sehr interessantes Feld wenn Firmen zwangsweise modernisieren müssen weil die alte Hardware unwiderruflich hin ist und kein Ersatz mehr aufzutreiben ist. Portierung, Portierung... ;)
Aber ich schweife ab :) Wichtig ists auf jeden Fall zu wissen, dass es nicht auf allen Windowsversionen funktioniert. Selbst wenn das eigene Projekt definitiv nur ab W2K aufwärts laufen soll, sollte man trotzdem wissen was man da tut. Mag nebensächlich scheinen, aber wenn es einem dann bei Drittsoftware in der Praxis unterkommt, und man direkt mit dem ganz langen Zeigefinger draufzeigen kann "DAS DA!", dann macht das auch durchaus entsprechenden Eindruck. Man kann eigentlich nie zuviel wissen :D (Okay okay, das gilt nicht für alle Bereiche des Lebens!) :zwinker: Edit: Muetze1 war schneller :) |
Re: Auf Dateiänderung reagieren!
Ah ich hab mein Hirn heute wohl bei der Wache abgegeben, die Lösung ist simpel.
Hab mir ne variable gemacht LastDate. Mit deren Hilfe kann ich die Änderung prima steuern :) Hehe Danke an alle ! |
Re: Auf Dateiänderung reagieren!
:wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall: :wall:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:18 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz