Jak szukać plików w delphi używając pliku Filtry.dat?

2011-04-24 09:33
0

Mam taki plik filtry.dat:
.log
.tmp
{ i jeszcze 114 innych wpisów }
Plik nie jest "zakodowany", normalnie można wejść do niego poprzez "AssignFile".
Mam taką procedurke i funkcje:

function GetDirectoryName(Dir:String):String;
begin
 if Dir[Length(Dir)] <> '\' then Result := dir + '\'
 else Result := Dir;
end;

procedure TForm3.ZnajdzPlik(Sciezka : String);
var
 FSearchRec, DSearchRec : TSearchRec;
 FindResult : Integer;
 NazwaPliku : String;
 TXT : TextFile;
begin
 AssignFile(TXT, ExtractFilePath(Application.ExeName) + 'filtry.dat');
 Reset(TXT);
 while not Eof(TXT) then
 Readln(TXT, NazwaPliku);
 Sciezka    := GetDirectoryName(Sciezka);
 FindResult := FindFirst(Sciezka + NazwaPliku, faAnyFile + faArchive + faHidden + faSysFile + faReadOnly, FSearchRec);
 try
  StatusBar1.Panels[0].Text := 'Szukam w: ' + Sciezka;
  while FindResult = 0 do
    begin
     ListBox1.Items.Add(Sciezka + FsearchRec.Name);
     FindResult := FindNext(FSearchRec);
    end;

  Application.ProcessMessages;
  FindResult:=FindFirst(Sciezka + '*.*', faDirectory + faHidden, DSearchRec);
  while FindResult=0 do
    begin
     if ((DSearchRec.Attr and faDirectory) = faDirectory) and ((DSearchRec.Name <> '.') and (DSearchRec.Name <> '..')) then ZnajdzPlik(Sciezka+DSearchRec.Name,NazwaPliku);
     FindResult:=FindNext(DSearchRec);
    end;
 finally
  FindClose(FSearchRec);
  FindClose(DSearchRec);
 end;
end;

Ale to się pętli 116 razy w jednym katalogu :O. Nie wiem co zrobić. Chcę aby program rozpoznał nazwę pliku i sprawdził czy istnieje w filtrach. Ale próbuje, i próbuje, i się nie da.
Proszę o pomoc. Z góry dziękuje.

//trochę OffTopic: nie rozumiem dlaczego moderatorzy przenoszą mnie do "Newbie" znam się już na delphi, i pomoc którą potrzebuje nie jest "dzieciniadą" dla podstawowego programisty.


Programuje w Delphi ;)
edytowany 1x, ostatnio: madmike, 2011-04-24 09:40
A w tym o co chodzi? "while not Eof(TXT) then" - pelsta 2011-04-24 09:54

Pozostało 580 znaków

2011-04-24 10:13
0
  1. Wczytać cały plik 'filtry.dat' do jakiegoś TStringList,
  2. W danym katalogu wyszukać Find(Sciezka + '.',...,FSearchRec),
  3. Wyodrębnić rozszerzenie z FSearchRec.Name, zamienić na małe litery (takie jak w pliku 'filtry.dat'),
  4. Sprawdzić czy takie rozszerzenie znajduje się w StringList.
edytowany 1x, ostatnio: pelsta, 2011-04-24 10:14

Pozostało 580 znaków

Liczba odpowiedzi na stronę

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