Einzelnen Beitrag anzeigen

Benutzerbild von stoxx
stoxx

Registriert seit: 13. Aug 2003
1.111 Beiträge
 
#1

JEDE ! Änderung einer Datei mitbekommen ?

  Alt 9. Apr 2004, 14:24
Es ist folgender Problemfall. Ich muss eine BESTIMMTE Datei überwachen.
Die Lösung über FindFirstChangeNotification hat für mich keinen Vorteil, da auch dort mit einer Schleife (ZusatzThread, Timer) gearbeitet werden müsste.

Also nehm ich den einfachen Weg und überwache mit folgendem Code das ÄnderungsDatum der Datei, welche mit allen möglichen Schreib und Leserechten für andere Programme geöffnet ist.
(Somit kann ein fremdes Programm da reinschreiben)

Code:
function TFileWatch.getModifiedTime : TDateTime;
var
    fCreationTime : FileTime;
    fLastAccessTime : FileTime;
    fLastWriteTime : FileTime;
begin
result := -1;
if FWatchFileHandle <> INVALID_HANDLE_VALUE then
begin
 GetFileTime(FWatchFileHandle, @fCreationTime, @fLastAccessTime, @fLastWriteTime);
 result:= FileTimeToDateTime(fLastWriteTime);
end; // von if invalid Handle
end; // von getmodifiedTime

Dann frage ich in einem Timer alle 100 ms ab, ob sich das Datei Datum geändert hat
Das funktioniert zwar, aber mehr schlecht als Recht. Es gibt nämlich das Problem, wenn die Datei zu schnell hintereinander geändert wird. Dann fehlt mir eine Änderung.
Wüsste jemand eine Lösung dafür ?

besten Dank !

Gruß stoxx
  Mit Zitat antworten Zitat