Localizar arquivos

Delphi

04/11/2003

Bem galera voltei,

alguem pode me ajudar com um form de localizar imgs parecido com o do windows?
tenho um form com 2 edits onde o primeiro dita o nome da img(*.tif) e preciso que ele localize esta img em varios diretorios e sub diretorios
por ex:
localizar 00001.tif
diretorio fixo: c:\arquivo\
subdiretorios: pasta1\11-12-00\joao
\maria
\jose
se ele nao achar em um local ir para o proximo (de joao a jose) se mesmo assim ele nao achar voltar para o diretorio e ir para o proximo sub diretorio pasta2\12-12-00\joao
\maria
\jose
e fazer a mesma coisa
ate o ultimo subdiretorio;

ou seja verifique um diretorio todo e seus subdiretorios


muitissimo obrigado desde ja

obs.: o outro especifica o subdiretorio (ex: pasta1) caso ele queira ir direto ao ponto;
uso delphi6;


abraço
:shock: :idea:


Martintec

Martintec

Curtidas 0

Respostas

Rodrigo_rcp

Rodrigo_rcp

04/11/2003

public
    procedure AddFilesToList (Filter, Folder: string; Recurse: Boolean);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


procedure GetSubDirs (Folder: string; sList: TStringList);
var
  sr: TSearchRec;
begin
  if FindFirst (Folder + ´*.*´, faDirectory, sr) = 0 then
  try
    repeat
      if (sr.Attr and faDirectory) = faDirectory then
        sList.Add (sr.Name);
    until FindNext(sr) <> 0;
  finally
    FindClose(sr);
  end;
end;


procedure TForm1.AddFilesToList(Filter, Folder: string; Recurse: Boolean);
var
  sr: TSearchRec;
  sDirList: TStringList;
  i: Integer;
begin
  if FindFirst (Folder + Filter, faAnyFile, sr) = 0 then
  repeat
    lbFiles.Items.Add (Folder + sr.Name);
  until FindNext(sr) <> 0;
  FindClose(sr);
  if Recurse then
  begin
    sDirList := TStringList.Create;
    try
      GetSubDirs (Folder, sDirList);
      for i := 0 to sDirList.Count - 1 do
        if (sDirList[i] <> ´.´) and (sDirList[i] <> ´..´) then
        begin
          Application.ProcessMessages;
          AddFilesToList (Filter,
            IncludeTrailingPathDelimiter (Folder + sDirList[i]),
            Recurse);
        end;
    finally
      sDirList.Free;
    end;
  end;
end;


Boa programação.


GOSTEI 0
Martintec

Martintec

04/11/2003

rodrigo_rcp muitossimo obrigado pela força funcionou direitinho

:lol:


martin


GOSTEI 0
POSTAR