Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi neueste Datei in Verzeichnis finden (https://www.delphipraxis.net/145024-neueste-datei-verzeichnis-finden.html)

Windwalker 22. Dez 2009 07:53


neueste Datei in Verzeichnis finden
 
Hallo,

ich starte aus Delphi heraus ein Batchprogramm, welches eine Datei in einem Verzeichnis erzeugt.
Zur Weiterverarbeitung brauche ich nun diese Datei.
Wie finde ich denn diese Datei?

Am einfachsten wird es wohl sein, nach der Datei mit dem neuesten Datum zu suchen, aber wie erhalte ich sie?

Danke für die Hilfe!

Matze 22. Dez 2009 08:26

Re: neueste Datei in Verzeichnis finden
 
Hallo Windwalker,

ob das Vorgehen zuverlässig ist, weiß ich nicht. Ich habe den Code nur kurz getestet und in 3 Testfällen lieferte er mir die neueste Datei. Unterverzeichnisse werden dabei ignoriert.
Wenn die Dateiendung bekannt ist, dann kannst du "*.*" in Zeile 10 durch deine Endung ersetzen. Bei sehr großen Verzeichnissen beschleunigt das die Suche nach der neuesten Datei.
Sollte das Verzeichnis keine Datei beinhalten, wird ein Leerstring zurückgegeben (in Zeile 8) kannst du ihn verändern.

Delphi-Quellcode:
function GetNewestFile(dir: string): string;
var
  F: TSearchRec;
  Time: Integer;
begin
  dir := IncludeTrailingPathDelimiter(dir);
  Time := 0;
  Result := '';

  if FindFirst(dir + '*.*', faAnyFile, F) = 0 then
  try
    // loop files (excluding sub directories)
    repeat
      if (F.Name <> '.') and (F.Name <> '..') and ((F.Attr and faDirectory) <> faDirectory) then
      begin
        // file found, so let's compare its date
        if F.Time > Time then
        begin
          Result := dir + F.Name;
          Time := F.Time
        end;
      end;
    until FindNext(F) <> 0;
  finally
    FindClose(F);
  end;
end;
Grüße, Matze

Windwalker 22. Dez 2009 08:44

Re: neueste Datei in Verzeichnis finden
 
Toll, danke!

Ich hätte jetzt nicht erwartet, dass du mir gleich eine komplette Funktion schreibst.
Hatte eher gehofft, es gäbe evtl. die Möglichkeit, dass direkt per Parameter über FindFirst zu machen, da ja FindFirst die Dateien aufsteigend nach Datum sortiert.

Aber da dem wohl nicht so ist, danke für die manuelle Implementierung!

Matze 22. Dez 2009 08:57

Re: neueste Datei in Verzeichnis finden
 
Hallo,

vielleicht geht es einfacher, aber ich wüsste nicht wie. Bei mir liefert FindFirst die Ergebnisse nicht nach Datum sortiert.

Grüße, Matze

Windwalker 22. Dez 2009 09:04

Re: neueste Datei in Verzeichnis finden
 
Zitat:

Zitat von Matze
vielleicht geht es einfacher, aber ich wüsste nicht wie. Bei mir liefert FindFirst die Ergebnisse nicht nach Datum sortiert.

Okay...
Ich hatte das mit der Sortierung nach Datum aufsteigend auch nur irgendwo hier im Forum gelesen.
Selbst war ich beim FindFirst noch nie auf eine Sortierung angewiesen.

Aber wurscht, so geht's ja! :-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:35 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