Fórum Buscar Arquivo dentro da pasta. #466866
14/01/2014
0
var
SRec, SearchRec: TSearchRec;
Done: Integer;
begin
Done := FindFirst(ExtractFilePath(
ParamStr(0))+ '*.rtm',0,SRec);
while Done = 0 do
begin
ListBox1.Items.Add(ChangeFileExt(SRec.Name,''));
Done := FindNext(SRec);
end;
FindClose(SRec);
end;
João Françozo
Curtir tópico
+ 0Posts
14/01/2014
Jaime Santos
procedure ListaArquivos(DiretorioInicial, Mascara:AnsiString; var ListaDeArquivos:TStrings; CaminhoCompleto:boolean=false; Subdiretorios:boolean=true);
var
i: integer;
listatemp: TStrings;
procedure ListarDiretorios(Folder: AnsiString; lista: Tstrings);
var
Rec: TSearchRec;
i: integer;
temps: AnsiString;
begin
lista.Clear;
if SysUtils.FindFirst(Folder + '*', faDirectory, Rec) = 0 then
try
repeat
lista.Add(rec.Name);
until SysUtils.FindNext(Rec) <> 0;
finally
if lista.count <> 0 then
begin
// deleta o diretorio ..
lista.Delete(1);
// deleta o diretorio .
lista.Delete(0);
i := 0;
//deleta os arquivos isto e fica apenas os diretorios
if lista.count <> 0 then
begin
repeat
temps := lista.Strings[i];
temps := extractfileext(temps);
if temps <> '' then
lista.Delete(i)
else
inc(i);
until i >= lista.Count;
end;
end;
end;
end;
procedure ListarAtahos(Folder, mask: AnsiString; Lista: Tstrings);
var
Rec: TSearchRec;
begin
lista.Clear;
if SysUtils.FindFirst(Folder + mask, faAnyFile, Rec) = 0 then
try
repeat
lista.Add(rec.Name);
until SysUtils.FindNext(Rec) <> 0;
finally
SysUtils.FindClose(Rec);
end;
end;
procedure AddLIstInOther(ListSource, ListDestino: TStrings);
var
f: integer;
begin
for f := 0 to ListSource.Count - 1 do
begin
ListDestino.Add(ListSource.Strings[f]);
end;
end;
begin
DiretorioInicial := trim(DiretorioInicial);
if DiretorioInicial[length(DiretorioInicial)] <> '\' then
DiretorioInicial := DiretorioInicial + '\';
listatemp := TStringList.Create;
ListarAtahos(diretorioInicial, mascara, listatemp);
if CaminhoCompleto then
begin
for i := 0 to listatemp.Count - 1 do
begin
listatemp.Strings[i] := diretorioInicial + listatemp.Strings[i];
end;
end;
AddLIstInOther(listatemp, ListaDeArquivos);
if SubDiretorios then
begin
ListarDiretorios(diretorioInicial, listatemp);
for i := 0 to listatemp.Count - 1 do
begin
ListaArquivos(DiretorioInicial + listatemp.Strings[i] + '\', Mascara, ListaDeArquivos, CaminhoCompleto, SubDiretorios);
end;
end;
listatemp.Free;
end;Att.
Rômulo Mayworm
Gostei + 0
14/01/2014
João Françozo
vamos tentar implantar no código meu acimar.
Gostei + 0
15/01/2014
Jaime Santos
na linha:
Done := FindFirst(ExtractFilePath(ParamStr(0))+ '*.rtm',0,SRec);
no lugar de EXTRACTFILEPATH(PARAMSTR(0)) coloque a path na qual deseja realizar a sua busca.
A função ExtractFilePath retorna uma string com o path do arquivo passado com parâmetro, no seu caso está passando seu próprio executável. Tente colocar no seu form um TDirectoryEdit, e através dele realizar a busca, após selecionar o diretório desejado.
Att.
Rômulo Mayworm
Gostei + 0
15/01/2014
João Françozo
SetCurrentDir(diretorio_relat);
Done := FindFirst(ExtractFilePath(diretorio_relat)+'*.rtm',0,SRec);
while Done = 0 do
begin
ListBox1.Items.Add(ChangeFileExt(SRec.Name,''));
Done := FindNext(SRec);
end;
FindClose(SRec);
Obrigado galera.
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)