localizar arquivos no hd
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....
agradeco desde ja....
Morpheus
Curtidas 0
Respostas
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
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
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
T+
Vitor Hugo vmotta@eep.br
GOSTEI 0
Morpheus
21/05/2003
EU E-MAIL E MAUROPAJR@HOTMAIL.COM
USO DELPHI 5
ATE
AGRADECO ANTECIPADAMENTE !!!
USO DELPHI 5
ATE
AGRADECO ANTECIPADAMENTE !!!
GOSTEI 0
Emir Neto
21/05/2003
emircalife@yahoo.com.br
GOSTEI 0