Einzelnen Beitrag anzeigen

Benutzerbild von Moombas
Moombas

Registriert seit: 22. Mär 2017
Ort: bei Flensburg
525 Beiträge
 
FreePascal / Lazarus
 
#1

Verzeichnis überwachen & Dateiänderungsdatum prüfen

  Alt 12. Apr 2018, 11:57
Moin zusammen,

ich hänge grade bei einem totalen Knoten im Hirn, hoffe ihr könnt mir helfen.

Ich möchte in einem Verzeichnis so lange prüfen, ob eine neue Datei erstellt wurde und wenn er sie gefunden hat, diese als Ergebnis liefern (Dateinamen).
Danach soll er prüfen ob die Datei verändert wurde (ist sie länger als 30sek. nicht verändert worden, soll sie kopiert werden).

Ich hatte dabei erst an den Timer gedacht, der alle 5 Sekunden prüft ob es eine gibt, jedoch ist dies wie ich bisher feststellte unschön. Habt ihr dabei eine Idee, bin schon vieles durch gegangen an Tipps etc aus dem Internet aber spätestens beim Datum scheitert es, da ich dabei bisher immer ein falsches Datum & Uhrzeit erhalten habe.

Code:
procedure TTools.NewLog(Path : string); //Wird alle 5sek vom Timer ausgelöst - aTime ist nur global deklariert, um sie ausgeben zu können
var
  Date1, Date2, Date3: TDateTime;
  Datei : string;
begin
  if (Split(GetLastModifiedFileName(Path), '2', 0) = 'Log') or
     (Split(GetLastModifiedFileName(Path), '2', 0) = 'log') then
  begin
    Datei := GetLastModifiedFileName(Path);
    showmessage(Datei);
    showmessage(Datetimetostr(atime));
  end;
end;

function TTools.GetLastModifiedFileName(AFolder: String; APattern: String = '*.txt'): String;
var
  sr: TSearchRec;
begin
  Result := '';
  aTime := 0;
  if FindFirst(IncludeTrailingPathDelimiter(AFolder) + APattern, faAnyFile, sr) = 0 then
  begin
    repeat
      if sr.Time > aTime then
      begin
        aTime := sr.Time;
        Result := sr.Name;
      end;
    until FindNext(sr) <> 0;
    FindClose(sr);
  end;
end;
  Mit Zitat antworten Zitat