Mit FindFirst/FindNext nur die Unterordner einlesen und die Ergebnisse einfach mit < > Vergleichen und merken. aus dem Ergebnis ein String basteln...
Delphi-Quellcode:
function GetLoHiSubDirs(aDirectory : String): String;
var
sr : TSearchRec;
loStr, hiStr : String;
begin
loStr := '99999999';
hiStr := '00000000';
aDirectory := IncludeTrailingPathDelimiter(aDirectory) + '*.*';
if FindFirst(aDirectory, faAnyFile, sr) = 0 then
begin
try
repeat
if (sr.Name[1] <> '.')
and ((sr.Attr and faDirectory) = faDirectory) then
begin
if sr.Name < loStr then
loStr := sr.Name;
if sr.Name > hiStr then
hiStr := sr.Name;
end;
until FindNext(sr) <> 0;
finally
FindClose(sr);
end;
end;
Insert('-', loStr, 7);
Insert('-', loStr, 5);
Insert('-', hiStr, 7);
Insert('-', hiStr, 5);
result := loStr +' - '+ hiStr;
end;
Es wird für das kleinste Datum erstmal das größtmögliche gespeichert (99999999), und dann bei der Suche durch kleinere Datum ersetzt.Beim größten Datum genau umgekehrt.
Der Rest ist nur die Funktionsweise von FindFirst/FindNext zu verstehen und das Ergebnis (mit Insert) aufzuhübschen.
PS: Versuche vor allem die Bit-Operation zu verstehen, sowas wirst Du häufiger brauchen:
if ((sr.Attr and faDirectory) = faDirectory) then