![]() |
NTFS, FileAge liefert nicht das neue Geändert-Datum, sondern das alte Geändert-Datum
Hallo #,
anders konnte ich es nicht ausdrücken. Ich mache folgendes. Doc-Datei aus DB holen Änderungsdatum merken (FileAge, noch das mit dem einen Parameter) Word (per Ole) öffnen, Doc-Datei öffnen in Word ändern, Speichern neues Geändert-Datum mit dem gemerkten vergleichen und bei Änderung zurück in die DB Problem (beim Kunden, unter XP-SP3): Hat er 2 Word offen, wird das Geändert-Datum nicht aktualisiert, ich bekomme nicht mit, dass sich was geändert hat !!! NTFS hat ja dieses "delayed write of last access time", aber das hat ja nichts mit dem Geändert-Datum zu tun, oder ? Kennt jemand das Problem/Links, die mein Problem bestätigen ? Danke Heiko |
AW: NTFS, FileAge liefert nicht das neue Geändert-Datum, sondern das alte Geändert-Da
Nur dass ich dein Problem richtig verstehe. Du schaust mit deinem Programm via Timer laufend in das Verzeichnis, in dem sich die Worddatei befindet und vergleichst das Geändert-Datum der Worddatei mit deinem gemerkten Datum, aber wenn du im Explorer nachschaust ändert sich das Datum nicht, wenn in Word "speichern" gedrückt wurde?
|
AW: NTFS, FileAge liefert nicht das neue Geändert-Datum, sondern das alte Geändert-Da
Bei uns wird sowas auch gemacht, aber bisher hat sich noch niemand diesbezüglich beschwert.
Kann aber auch sein, daß die immer nur eine Instanz offen haben. Bei uns läuft die Schleife so lange, bis das programm den zugriff beendet, aber z.B. durch OpenOffice haben wir da Probleme bekommen. MS office hält die Datei die ganze zeit geöffnet und man bekommt mit wenn es fertig ist, während OO das nur kurz beim Lesen öffnet. Drum hatte ich dann zuletzt noch eine Schleife vorgelagert, welcher misst, ob die Datei eine gewisse Mindestzeit offen ist und ich zeige dem Benutzer einen Wartedialog an, wo er auch nochmal manuell die Wahl hat, ob die Datei wieder ins Programm zurückgespeichert werden soll. (egal wie der Status vom Änderungsdatum aussieht) > Also neben der "automatischen" Erkennung auch nochmal manuell, da einfch immer irgendwelche Probleme möglich sind. Ach ja, das Datum der letzten Änderung wird scheinbar erst geändert/gespeichert, wenn das letzte Dateihandle weg ist, oder wenn man irgendwie einen Refresh hinbekommt. (z.B. beim zweiten oder dritten mal auf F5 drücken, im Explorer) |
AW: NTFS, FileAge liefert nicht das neue Geändert-Datum, sondern das alte Geändert-Da
Hallo,
Nein, kein Timer, bei OLE gibt es ein AppQuit-Event. Wenn Word zu ist, prüfe ich über den Vergleich der beiden Datumswerte, ob der Nutzer überhaupt was geändert hat. Nur dann kommt ein Fenster zum Überschreiben bzw. Neu in die DB packen. Dumm nur, dass mir Windows das alte Datum zurückgibt. Ich kann das hier nicht nachstellen, hatte es aber beim Kunden gesehen. Heiko |
AW: NTFS, FileAge liefert nicht das neue Geändert-Datum, sondern das alte Geändert-Da
Zitat:
|
AW: NTFS, FileAge liefert nicht das neue Geändert-Datum, sondern das alte Geändert-Da
Ich würde einen Hash-Wert von dem Dateiinhalt erzeugen lassen und damit vergleichen. Das sollte immer funktionieren
|
AW: NTFS, FileAge liefert nicht das neue Geändert-Datum, sondern das alte Geändert-Da
Zitat:
Einfacher Test, den jeder selbst durchführen kann: Word-Dokument erstellen und speichern. Dann im Dateimanager eine Kopie davon erzeugen und von beiden Dateien Prüfsummen erzeugen (im Total Commander sind diese Schritte ganz einfach ;)). Nun eines der Dokumente im Word öffnen und wieder schließen und wieder Prüfsummen erzeugen. Den letzten Schritt muss man u.U. mehrfach wiederholen, aber irgendwann ist der Dateiinhalt ein anderer. MfG Dalai |
AW: NTFS, FileAge liefert nicht das neue Geändert-Datum, sondern das alte Geändert-Da
Und das Änderungsdatum der Datei wird dann nicht geändert?
Vielleicht ist ein Directory-Monitor (wie man ihn aus .NET kennt: FileSystemWatcher) ja eine bessere Lösung für dich? ![]() Der Vorteil wäre, dass man alle Änderungen (auch von Drittprogrammen) mitbekommt. |
AW: NTFS, FileAge liefert nicht das neue Geändert-Datum, sondern das alte Geändert-Da
Zitat:
MfG Dalai |
AW: NTFS, FileAge liefert nicht das neue Geändert-Datum, sondern das alte Geändert-Da
Ach ja, das liegt übrigens auch mit daran, daß man in den neueren NTFS-Treibern immer mehr die Schreibzugriffe minimiert hat.
Darum wird/wurde das Last-Access nicht immer gespeichert und vorallem nicht mehr bei Verzeichnissen. Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:56 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