Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Dateiennamen und Versionen filtern (https://www.delphipraxis.net/93007-dateiennamen-und-versionen-filtern.html)

Brakeman 30. Mai 2007 09:49


Dateiennamen und Versionen filtern
 
Hallo,
ich möchte aus einem Verzeichnis die enthaltenen Dateien (Quellcode) folgendermassen filtern:

Es soll für jede Datei die höchste Version herausgefunden werden und in ein Array oder eine Liste geschrieben werden. Nun müsste ich ja erstmal alle Datein gleichen Namens herausfinden und dann im zweiten Gang nach der höchsten Version suchen. Wie könnte man das am besten machen?

Die Dateien heißen z.B.:

-MacheDies_2_0.java
-MacheDies_3_0.java
-MacheDies_4_0.java
-MacheDies_5_0.java
-MacheDas_2_0.java
-MacheDas_3_0.java
-MacheDas_4_0.java
-MacheDas_5_0.java

Wäre für jede Hilfe sehr dankbar!

Klaus01 30. Mai 2007 09:58

Re: Dateiennamen und Versionen filtern
 
Guten Morgen,

suche bitte hier im Forum nach FindFirst und FindNext.
Dazu sollten sich genügend Beispiele finden lassen.

Grüße
Klaus

chrisw 30. Mai 2007 10:26

Re: Dateiennamen und Versionen filtern
 
Ich würde das folgendermaßen machen:


Delphi-Quellcode:
function GetLatestVersion (FileName: String) : String;
var sl : TStringList;
    sr : TSearchRec;
begin
  sl := TStringList.Create;
  sl.Sorted := True;
  if FindFirst(FileName,faReadOnly,sr) = 0 then sl.Add(sr.Name);
  while FindNext(sr) = 0 do sl.Add(sr.Name);
  FindClose(sr);
  if sl.Count > 0 then Result := sl[sl.Count -1] else Result := '';
  sl.Free;
end;
Aufruf z.Bsp. mit
Delphi-Quellcode:
Showmessage(GetLatestVersion('C:\MacheDies*');

Brakeman 30. Mai 2007 11:05

Re: Dateiennamen und Versionen filtern
 
Danke,
mit der Function geht es super!


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