AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Auf Dateiänderung reagieren!

Ein Thema von Ajin · begonnen am 11. Okt 2006 · letzter Beitrag vom 11. Okt 2006
Antwort Antwort
Ajin

Registriert seit: 23. Feb 2006
Ort: Mons
252 Beiträge
 
Delphi 2010 Professional
 
#1

Auf Dateiänderung reagieren!

  Alt 11. Okt 2006, 14:50
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:
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
Soderle. Auf meiner Entwicklungsmaschine funktionert das prima, sobald ich die Datei abspeicher kommt die Message.
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?
  Mit Zitat antworten Zitat
DevilsCamp
(Gast)

n/a Beiträge
 
#2

Re: Auf Dateiänderung reagieren!

  Alt 11. Okt 2006, 14:53
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.
  Mit Zitat antworten Zitat
generic

Registriert seit: 24. Mär 2004
Ort: bei Hannover
2.415 Beiträge
 
Delphi XE5 Professional
 
#3

Re: Auf Dateiänderung reagieren!

  Alt 11. Okt 2006, 14:57
windows kann das von haus aus.
schau mal im msdn unter "FindFirstChangeNotification" nach.

http://msdn.microsoft.com/library/de...tification.asp
Coding BOTT - Video Tutorials rund um das Programmieren - https://www.youtube.com/@codingbott
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: Auf Dateiänderung reagieren!

  Alt 11. Okt 2006, 15:05
... wird aber nur bei Windows NT und folgende Betriebssysteme unterstützt. Windows 9x/ME sind da außen vor.
  Mit Zitat antworten Zitat
DevilsCamp
(Gast)

n/a Beiträge
 
#5

Re: Auf Dateiänderung reagieren!

  Alt 11. Okt 2006, 15:06
Ernstgemeinte Frage:

Wer benutzt heutzutage noch Win9x/ME?
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#6

Re: Auf Dateiänderung reagieren!

  Alt 11. Okt 2006, 15:12
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.
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Auf Dateiänderung reagieren!

  Alt 11. Okt 2006, 15:25
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 (Okay okay, das gilt nicht für alle Bereiche des Lebens!)

Edit: Muetze1 war schneller
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Ajin

Registriert seit: 23. Feb 2006
Ort: Mons
252 Beiträge
 
Delphi 2010 Professional
 
#8

Re: Auf Dateiänderung reagieren!

  Alt 11. Okt 2006, 15:28
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 !
  Mit Zitat antworten Zitat
Benutzerbild von OldGrumpy
OldGrumpy

Registriert seit: 28. Sep 2006
Ort: Sandhausen
941 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Auf Dateiänderung reagieren!

  Alt 11. Okt 2006, 15:32
"Tja ja, das Ausrufezeichen... Der virtuelle Spoiler des 21. Jahrhunderts, der Breitreifen für die Datenautobahn, die k3wle Sonnenbrille fürs Usenet. " (Henning Richter)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 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