//转贴 procedure TForm1.DeleteTree(s:string); VAR searchRec:TSearchRec; begin if FindFirst(s+'\*.*', faAnyFile, SearchRec)=0 then repeat if (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then begin if (SearchRec.Attr and faDirectory>0) then begin rec_stack[rec_pointer]:=SearchRec; rec_pointer:=rec_pointer-1; DeleteTree(s+'\'+SearchRec.Name); rec_pointer:=rec_pointer+1; SearchRec:=rec_stack[rec_pointer]; end else begin try FileSetAttr(s+'\'+SearchRec.Name,faArchive); DeleteFile(s+'\'+SearchRec.Name); except Application.MessageBox(PChar('Delete File:'+s+'\'+SearchRec.Name+' Error!'),'Info',MB_OK); Del_Flag:=False; end; end; end; until (FindNext(SearchRec)<>0); FindClose(SearchRec); if rec_pointer<30 then begin try FileSetAttr(s,faArchive); RemoveDir(s); except Application.MessageBox(PChar('Delete Directory:'+s+' Error!'),'Info',MB_OK); Del_Flag:=False; end; end; end; //--------------------------------------------------------- procedure TForm1.Button1Click(Sender: TObject); begin Del_Flag:=True; rec_pointer:=30; DeleteTree('c:\temp'); if Del_Flag then Application.MessageBox(PChar('目录c:\temp的内容已成功清除!'),'信息',MB_OK); end;
var F: Textfile; begin OpenDialog1.Title := 'Delete File'; if OpenDialog1.Execute then begin AssignFile(F, OpenDialog1.FileName); try Reset(F); if MessageDlg('Erase ' + OpenDialog1.FileName + '?', mtConfirmation, [mbYes, mbNo], 0) = mrYes then begin CloseFile(F); Erase(F); end; except on EInOutError do MessageDlg('File I/O error.', mtError, [mbOk], 0); end; end; end;如果要删除整个目录中的文件,需要搜索 所有的文件名称即可。
我怎么只能删除一个
不过做为一个程序员,解决问题是第一位的,所以可以用下述办法
winexec('Deltree.exe -y c:\test',sw_hide);
procedure TForm1.DeleteTree(s:string);
VAR searchRec:TSearchRec;
begin
if FindFirst(s+'\*.*', faAnyFile, SearchRec)=0 then
repeat
if (SearchRec.Name<>'.') and (SearchRec.Name<>'..') then
begin
if (SearchRec.Attr and faDirectory>0) then
begin
rec_stack[rec_pointer]:=SearchRec;
rec_pointer:=rec_pointer-1;
DeleteTree(s+'\'+SearchRec.Name);
rec_pointer:=rec_pointer+1;
SearchRec:=rec_stack[rec_pointer];
end
else
begin
try
FileSetAttr(s+'\'+SearchRec.Name,faArchive);
DeleteFile(s+'\'+SearchRec.Name);
except
Application.MessageBox(PChar('Delete File:'+s+'\'+SearchRec.Name+' Error!'),'Info',MB_OK);
Del_Flag:=False;
end;
end;
end;
until (FindNext(SearchRec)<>0);
FindClose(SearchRec);
if rec_pointer<30 then
begin
try
FileSetAttr(s,faArchive);
RemoveDir(s);
except
Application.MessageBox(PChar('Delete Directory:'+s+' Error!'),'Info',MB_OK);
Del_Flag:=False;
end;
end;
end;
//---------------------------------------------------------
procedure TForm1.Button1Click(Sender: TObject);
begin
Del_Flag:=True;
rec_pointer:=30;
DeleteTree('c:\temp');
if Del_Flag then Application.MessageBox(PChar('目录c:\temp的内容已成功清除!'),'信息',MB_OK);
end;
F: Textfile;
begin
OpenDialog1.Title := 'Delete File';
if OpenDialog1.Execute then begin
AssignFile(F, OpenDialog1.FileName);
try
Reset(F);
if MessageDlg('Erase ' + OpenDialog1.FileName + '?',
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
CloseFile(F);
Erase(F);
end;
except
on EInOutError do MessageDlg('File I/O error.', mtError, [mbOk], 0);
end;
end;
end;如果要删除整个目录中的文件,需要搜索 所有的文件名称即可。