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;