Witam,
Przy pomocy poniższe procedury chcę wyszukać najmłodze pliki o danym rozszerzeniu. Wszystko jest ok, do mementu kiedy np. mam klika plików (np *.txt) o tej samej dacie ale o różnych godzinach. Procedura zamiast wybrać mi z nich najmłodzy, przepisuje do CheckBoxa wszystkie pliki.
Może ktoś podsunie mi co poprawić ale osiągnąć zamierzony efekt.
procedure TForm1.SzukajNajmlodzsze(
const
PathName, FileName2 : string; const
InDir : boolean);
<b>var</b> Rec : TSearchRec;
Path, CurFile, AllFiles : <b>String</b>;
i, time1: integer;
nazwa_pliku : <b>String</b>;
<b>begin</b>
Path := IsDir(PathName);
AllFiles := FileName2;
time1:=0;
<b>while</b> AllFiles<>'' <b>do begin</b>
i :=pos(';', AllFiles);
if i=0 <b>then</b><b> begin</b>
CurFile :=Trim(AllFiles);
AllFiles :='';
<b>end <b>else begin</b></b>
CurFile :=Trim(Copy(AllFiles, 1, i-1));
Delete(AllFiles, 1, i);
<b>end;</b>
<b>if</b> FindFirst(Path + CurFile, faAnyFile - faDirectory, Rec) = 0 <b>then</b>
<b>try
repeat</b>
if rec.time > time1 <b>then</b>
<b>begin</b>
time1 := rec.time ;
nazwa_pliku := rec.name ;
<b> if</b> CheckListBox2.Items.IndexOf(Path + nazwa_pliku) < 0 <b>then</b>
CheckListBox2.Items.Add(Path + nazwa_pliku);
<b>end;</b>
<b>until</b> FindNext(Rec) <> 0;
<b>finally</b>
FindClose(Rec);
<b>end;
end;</b>
if<b> not </b>InDir t<b>hen </b>Exit;
<b>if</b> FindFirst(Path + '*.*', faDirectory, Rec) = 0 <b>then</b>
<b>try
repeat</b>
<b>if</b> (Rec.name <> '.') <b>and</b> (Rec.name <> '..') <b>then</b>
SzukajNajmlodzsze(Path + rec.name, FileName2, True);
u<b>ntil</b> FindNext(Rec) <> 0;
<b>finally</b>
FindClose(Rec);
<b>end;</b>
<b>end;</b>
-------------
użycie:
SzukajNajmlodzsze(NajmlodszePlikiCB.Text,FileMask.Text, False);
---------------
```delphi
function
TForm1.IsDir(Value :
String
) : <code class="delphi">String;
begin
if
Value[Length(Value)] <> ''
then
// jeżeli na końcu znajdziesz znak
Result := Value + ''
```delphi
else
Result := Value; // dodaj go... w przeciwnym wypadku nie rób nic
en
d;
Z góry dziękuję za pomoc,
Piotr Murawski