Najmłodze pliki

0

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

0

Z opisu problemu wynika, że w algorytmie szukającym jest błąd :). Dokładniej mówiąc: porównujesz zakodowane informacje na temat czasu pliku i najprawdopodobniej w tym problem. Dekoduj czas i porównuj osobno każdy prarametr.

PS. Coś się nie mogłeś zdecydować na jakąś konkretną pisownię słowa "N A J M Ł O D S Z E" (żadnego "dz"!).

1 użytkowników online, w tym zalogowanych: 0, gości: 1