AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Test, ob Datei aktualistert ist

Ein Thema von aaaaaaaaaa_10 · begonnen am 15. Jul 2009 · letzter Beitrag vom 15. Jul 2009
Antwort Antwort
Seite 1 von 2  1 2   
aaaaaaaaaa_10
(Gast)

n/a Beiträge
 
#1

Test, ob Datei aktualistert ist

  Alt 15. Jul 2009, 11:51
Hallo,

Ich lese aus einer Datei die erste und letzt Zeile und schreibe diese in eine neue Datei.
Nun das Problem:
Die erstel Zeile ist fest, aber die letzte Zeile ändert sich immer in der gegebenen Datei.
Jetzt will ich herauskriegen wann sich die Datei geändert hat um die neue letzte Zeile in meiner Datei hinten anzuhängen.

Wie kann ich testen, ob die Datei sich geändert hat? Über einen Timer? Oder wie?
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Test, ob Datei aktualistert ist

  Alt 15. Jul 2009, 11:57
Man könnte in regelmäßigen Intervallen einen hashwert bilden und diesen mit dem vorherigen vergleichen. Unterscheiden sie sich, hat sich die Datei geändert. Problem ist, dass wenn der Intervall zu groß ist, die Datei schon mehrere Änderungen erfahren haben könnte. Man müsste also bei einer Änderung noch in der datei gucken, was sich geändert hat, ob nur eine zeile dazu gekommen ist oder in der Zwischenzeit schon wieder drei oder vier oder fünf.

Schöner wäre es, wenn du eine Benachrichtigung bekämst, wenn sich die Datei geändert hat. Gibt es da eine Möglichkeit? Ist das Programm, was die Datei ändert auch von dir oder hast du Zugriff auf den Quellcode?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Stormy

Registriert seit: 8. Okt 2005
Ort: LPZ
73 Beiträge
 
Delphi 6 Enterprise
 
#3

Re: Test, ob Datei aktualistert ist

  Alt 15. Jul 2009, 12:03
Hi,

lese doch vorher via TWin32FindData die Zeit des letzten Dateichanges aus (ftLastWriteTime) und prüfe dann aller X Sekunden z.B. mit einem Timer ob sich da was gändert hat.


Gruß
Stormy
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.151 Beiträge
 
Delphi 12 Athens
 
#4

Re: Test, ob Datei aktualistert ist

  Alt 15. Jul 2009, 12:04
Für einen Hashwert, müßte er die ganze Datei erstmal auslesen (also der Code, welcher den Hash bildet)

Hier würde es aber reichen, wenn er nur die letze Zeile ausließt und sie mit der Letzen in seiner Datei vergleicht.

Vorher könnte an vermutlich (hoffentlich) auch einfach nur mal die Änderungszeit der Datei auslesen,

bzw. sich über änderungen im Verzeichnis informieren lassen ... man könnte sich ja über Änderungen am Dateisystem informieren lassen.
Wie oft wird denn die Datei geändert? (letzeres hilft ja nur was, wenn sich die Datei wärend der Laufzeit deines Programmes ändert)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PosEx im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von peschai
peschai

Registriert seit: 15. Feb 2004
Ort: Göppingen
270 Beiträge
 
Delphi XE5 Professional
 
#5

Re: Test, ob Datei aktualistert ist

  Alt 15. Jul 2009, 12:04
Hallo,
Es gäbe auch noch die elegante Möglichkeit, daß dir as Betriebssystem hilft -> Directory notification.
Peter Schaible
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Test, ob Datei aktualistert ist

  Alt 15. Jul 2009, 12:06
Ändert nichts an dem zweiten Problem. Und ein Hashwert ist sicherer, weil was passiert, wenn die Systemzeit geändert wird?

Zitat von peschai:
Es gäbe auch noch die elegante Möglichkeit, daß dir as Betriebssystem hilft -> Directory notification.
Habe ich auch erst in Erwägung gezogen, allerdings bin ich mir nicht sicher, ob er da auch die geänderte Datei gemeldet bekommt.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von peschai
peschai

Registriert seit: 15. Feb 2004
Ort: Göppingen
270 Beiträge
 
Delphi XE5 Professional
 
#7

Re: Test, ob Datei aktualistert ist

  Alt 15. Jul 2009, 12:07
Anmerkung zu DateiZeit:
Wenn man den Änderungszeitstempel des Betriebssystem nimmt, muss man evt. aufpassen wie schnell die änderungen erfolgen. Liegen diese unterhalb von ms dann sollten man aufpassen...
Peter Schaible
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Test, ob Datei aktualistert ist

  Alt 15. Jul 2009, 12:17
Ich habe jetzt gerade kein Delphi zur Hand. Aber ich meine bei den Jedis gab es eine Komponente mit der man eine Datei "überwachen" kann.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#9

Re: Test, ob Datei aktualistert ist

  Alt 15. Jul 2009, 12:19
Hallo,

habe da mal eine Frage:

Ändert sich die letzte Zeile oder wird an das Ende der Datei was drangehangen, so dass sich auch die Zeilenzahl ändert?

Ist die zweite Alternative der Fall:

Dateigröße merken, wenn die sich geändert hat gibt es was neues in der Datei.
Die Änderungen sind ab alter Dateigröße + 1 Byte zu finden.
Damit kann man Logfiles eigentlich recht gut abarbeiten, ohne explizit nach dem letzten Inhalt vor der Änderung zu suchen und dann den "Rest" der Datei auszuwerten. Man hat so auch keinen Informationsverlust, falls man ausversehen mal eine Dateiänderung "verschlafen" hat.
Wenn sich die Dateigröße verkleiner hat, muss man halt die ganze Datei auswerten.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.276 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: Test, ob Datei aktualistert ist

  Alt 15. Jul 2009, 12:40
Hallo,

Zitat:
Die erstel Zeile ist fest, aber die letzte Zeile ändert sich immer in der gegebenen Datei.
Also merke dir im Programm die jeweils zuletzt geschriebene Zeile
in einer Variable.
Ich würde dann dafür einen Timer verwenden,
wenn es nicht auf die ms ankommt.


Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 10:32 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