Einzelnen Beitrag anzeigen

Benutzerbild von littleDave
littleDave

Registriert seit: 27. Apr 2006
Ort: München
556 Beiträge
 
Delphi 7 Professional
 
#2

Re: Zugriffsfehler bei Ordnerüberwachung

  Alt 13. Aug 2008, 13:04
Wie wäre is mit folgender Idee: du überwachst den Ordner weiterhin wie gehabt. Sobald dann eine neue Datei erstellt wird, versuchst du aber nicht sofort, diese auszulesen sondern fügst einen Eintrag in eine Liste hinzu. So ein Eintrag könnte z.B. sein:
Delphi-Quellcode:
type
  TFileChangeType = (fctNewFile, fctModfied, fctDeleted);
  
  PFileChangeData = ^TFileChangeData;
  TFileChangeData = record
    ChangeType : TFileChangeType; // welche Änderung
    FileName : string; // der komplette Pfad
    Notified : TDateTime; // Zeitpunkt, an dem der Eintrag in die Liste hinzugefügt wurde
  end;
Dieses Record füllst du dann mit den entsprechenden Parametern aus und fügst es wie gesagt in eine Liste hinzu.

Diese Liste arbeitest du dann z.B. in einem seperaten Thread ab. Sobald eine Änderung dann erfolgreich in deine Datenbank übertragen wurde, löschst du den Eintrag aus der Liste wieder.

Wenn du jetzt z.B. noch nicht auf eine Datei zugreifen kannst, dann schlägt das Hinzufügen ja fehl und der Eintrag wird dann nicht aus der Liste entfernt. Dann wartest du halt etwas (im Thread z.B. mit Sleep) oder arbeitest erstmal andere Einträge ab und probierst es dann nochmal. Das machst du dann solange, bis du geschafft hast.
Jabber: littleDave@jabber.org
in case of 1 is 0 do external raise while in public class of object array else repeat until 1 is 0
  Mit Zitat antworten Zitat