AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

neueste Datei in Verzeichnis finden

Ein Thema von Windwalker · begonnen am 22. Dez 2009 · letzter Beitrag vom 22. Dez 2009
Antwort Antwort
Windwalker

Registriert seit: 9. Mär 2009
72 Beiträge
 
#1

neueste Datei in Verzeichnis finden

  Alt 22. Dez 2009, 08:53
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!
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: neueste Datei in Verzeichnis finden

  Alt 22. Dez 2009, 09:26
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
  Mit Zitat antworten Zitat
Windwalker

Registriert seit: 9. Mär 2009
72 Beiträge
 
#3

Re: neueste Datei in Verzeichnis finden

  Alt 22. Dez 2009, 09:44
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!
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#4

Re: neueste Datei in Verzeichnis finden

  Alt 22. Dez 2009, 09:57
Hallo,

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

Grüße, Matze
  Mit Zitat antworten Zitat
Windwalker

Registriert seit: 9. Mär 2009
72 Beiträge
 
#5

Re: neueste Datei in Verzeichnis finden

  Alt 22. Dez 2009, 10:04
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!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:06 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