localizar arquivos no hd

Delphi

21/05/2003

preciso que minha aplicacao verifique a existencia de um arquivo no hd...pode estar em qulaquer pasta...como faco isso...mandar localizar um arquivo e fazer com que ele procure por todo o hd...
agradeco desde ja....


Morpheus

Morpheus

Curtidas 0

Respostas

Carnette

Carnette

21/05/2003

preciso que minha aplicacao verifique a existencia de um arquivo no hd...pode estar em qulaquer pasta...como faco isso...mandar localizar um arquivo e fazer com que ele procure por todo o hd... agradeco desde ja....


[quote=´Procurando um arquivo em todo o HD´)

interface

type
PRecInfo=^TRecInfo;
Trecinfo=record
prev:PRecInfo;
fpathname:string;
srchrec:Tsearchrec;
end;


implememtation

function TForm1.RecurseDirectory(fname:string):tstringlist;
var
f1,f2:Tsearchrec;
p1,tmp:PRecInfo;
fwc:string;
fpath:string;
fbroke1,fbroke2:boolean;
begin
result:=tstringlist.create;
fpath:=extractfilepath(fname);
fwc:=extractfilename(fname);
new(p1);
p1.fpathname:=fpath;
p1.prev:=nil;
fbroke1:=false;
fbroke2:=false;
while(p1<>nil) do
begin
if (fbroke1=false) then
if (fbroke2=false) then
begin
if (findfirst(fpath+´*´,faAnyfile,f1)<>0) then
break;
end
else if (findnext(f1)<>0) then
begin
repeat
findclose(f1);
if (p1=nil) then
break;
fpath:=p1.fpathname;
f1:=p1.srchrec;
tmp:=p1.prev;
dispose(p1);
p1:=tmp;
until (findnext(f1)=0);
if (p1=nil) then
break;
end;
if((f1.Name<>´.´) and (f1.name<>´..´) and ((f1.Attr and fadirectory)=fadirectory)) then
begin
fbroke1:=false;
new(tmp);
with tmp^ do
begin
fpathname:=fpath;
srchrec.Time:=f1.time;
srchrec.Size:=f1.size;
srchrec.Attr:=f1.attr;
srchrec.Name:=f1.name;
srchrec.ExcludeAttr:=f1.excludeattr;
srchrec.FindHandle:=f1.findhandle;
srchrec.FindData:=f1.FindData;
end;
tmp.prev:=p1;
p1:=tmp;
fpath:=p1.fpathname+f1.name+´\´;
if findfirst(fpath+fwc,faAnyfile,f2)=0 then
begin
result.add(fpath+f2.Name);
while(findnext(f2)=0) do
result.add(fpath+f2.Name);
findclose(f2);
end;
fbroke2:=false;
end
else
begin
if (findnext(f1)<>0) then
begin
findclose(f1);
fpath:=p1.fpathname;
f1:=p1.srchrec;
fbroke1:=false;
fbroke2:=true;
tmp:=p1.prev;
dispose(p1);
p1:=tmp;
end
else
begin
fbroke1:=true;
fbroke2:=false;
end;
end;
end;
fpath:=extractfilepath(fname);
if findfirst(fname,faAnyfile,f1)=0 then
begin
result.add(fpath+f2.Name);
while(findnext(f1)=0) do
result.add(fpath+f2.Name);
findclose(f1);
end;
end;

//Chame a funcao deste jeito:

procedure TForm1.Button1Click(Sender: TObject);
var
l1:Tstringlist;
begin
l1:=tstringlist.create;
listbox1.items.clear;
listbox1.Items.BeginUpdate;
l1:=recursedirectory1(´C:\*.exe´);
listbox1.items.assign(l1);
freeandnil(l1);
listbox1.Items.endUpdate;
end;



GOSTEI 0
Morpheus

Morpheus

21/05/2003

onde eu coloco esse codigo..pois tentei colocar abaixo da Clausula Interface depois em implenteition mas deu monte de eero..onde eu coloco esse codigo na minha unit ....por favor me ajude...


GOSTEI 0
Vmotta

Vmotta

21/05/2003

kra, tenho um sisteminha bem simples que faz isso por recursividade, é bem mais simples, se te enteressar, me passa um e-mail que eu mando o código fonte dele, blz? qual delphi vc usa ?

T+
Vitor Hugo vmotta@eep.br


GOSTEI 0
Morpheus

Morpheus

21/05/2003

EU E-MAIL E MAUROPAJR@HOTMAIL.COM
USO DELPHI 5

ATE
AGRADECO ANTECIPADAMENTE !!!


GOSTEI 0
Emir Neto

Emir Neto

21/05/2003

emircalife@yahoo.com.br


GOSTEI 0
POSTAR