AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi NTFS, FileAge liefert nicht das neue Geändert-Datum, sondern das alte Geändert-Datum
Thema durchsuchen
Ansicht
Themen-Optionen

NTFS, FileAge liefert nicht das neue Geändert-Datum, sondern das alte Geändert-Datum

Ein Thema von hoika · begonnen am 19. Nov 2013 · letzter Beitrag vom 19. Nov 2013
Antwort Antwort
Seite 1 von 2  1 2      
hoika

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

NTFS, FileAge liefert nicht das neue Geändert-Datum, sondern das alte Geändert-Datum

  Alt 19. Nov 2013, 13:57
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
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: NTFS, FileAge liefert nicht das neue Geändert-Datum, sondern das alte Geändert-Da

  Alt 19. Nov 2013, 14:19
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?
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: NTFS, FileAge liefert nicht das neue Geändert-Datum, sondern das alte Geändert-Da

  Alt 19. Nov 2013, 14:47
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)
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests

Geändert von himitsu (19. Nov 2013 um 14:50 Uhr)
  Mit Zitat antworten Zitat
hoika

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

AW: NTFS, FileAge liefert nicht das neue Geändert-Datum, sondern das alte Geändert-Da

  Alt 19. Nov 2013, 16:48
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
Heiko

Geändert von hoika (19. Nov 2013 um 16:50 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.540 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: NTFS, FileAge liefert nicht das neue Geändert-Datum, sondern das alte Geändert-Da

  Alt 19. Nov 2013, 17:29
Wenn Word zu ist, prüfe ich über den Vergleich der beiden Datumswerte,
ob der Nutzer überhaupt was geändert hat.
Könnte man dazu nicht auch das Archiv-Atribut verwenden?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

AW: NTFS, FileAge liefert nicht das neue Geändert-Datum, sondern das alte Geändert-Da

  Alt 19. Nov 2013, 17:58
Ich würde einen Hash-Wert von dem Dateiinhalt erzeugen lassen und damit vergleichen. Das sollte immer funktionieren
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.680 Beiträge
 
Delphi 5 Professional
 
#7

AW: NTFS, FileAge liefert nicht das neue Geändert-Datum, sondern das alte Geändert-Da

  Alt 19. Nov 2013, 18:11
Ich würde einen Hash-Wert von dem Dateiinhalt erzeugen lassen und damit vergleichen. Das sollte immer funktionieren
Nein, das funktioniert nicht zuverlässig bei MS Office Dokumenten. Grund: Word (und IIRC auch Excel) ändern gern mal den Dateiinhalt, obwohl man das Dokument nur geöffnet und wieder geschlossen hat. Ich gebe zu, dass ich nicht weiß, wie sich MS Office ab Version 2007 verhält (DOCX ist ja nichts weiter als gezipptes XML mit ein bissel Krempel drumrum), aber bis einschließlich Version 2003 ist das so.

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
  Mit Zitat antworten Zitat
Morphie

Registriert seit: 27. Apr 2008
Ort: Rahden
630 Beiträge
 
#8

AW: NTFS, FileAge liefert nicht das neue Geändert-Datum, sondern das alte Geändert-Da

  Alt 19. Nov 2013, 18:20
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?
http://www.osnews.com/story/7376/A_D..._Delphi/page1/
Der Vorteil wäre, dass man alle Änderungen (auch von Drittprogrammen) mitbekommt.
  Mit Zitat antworten Zitat
Benutzerbild von Dalai
Dalai

Registriert seit: 9. Apr 2006
1.680 Beiträge
 
Delphi 5 Professional
 
#9

AW: NTFS, FileAge liefert nicht das neue Geändert-Datum, sondern das alte Geändert-Da

  Alt 19. Nov 2013, 18:28
Und das Änderungsdatum der Datei wird dann nicht geändert?
Falls du mich meinst: Ja, der Zeitstempel der Datei bleibt identisch; erst beim Speichern des Dokuments setzt Office einen neuen.

MfG Dalai
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: NTFS, FileAge liefert nicht das neue Geändert-Datum, sondern das alte Geändert-Da

  Alt 19. Nov 2013, 18:31
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.

Nein, das funktioniert nicht zuverlässig bei MS Office Dokumenten. Grund: Word (und IIRC auch Excel) ändern gern mal den Dateiinhalt, obwohl man das Dokument nur geöffnet und wieder geschlossen hat.
Die speichern z.B. in der Datei gerne ab, wer wann zu zuletzt darauf zugegriffen hat, und das auch bei Lesezugriffen.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 02:54 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