告诉我哪里能下载到win32 api大全?
解决方案 »
- 请问怎么在外网两台机器之间通讯啊,好象在局域网内实现很容易
- Delphi 中﹐如果指定dbgrid 的某个field 得到焦点啊……
- 在批量录入的时候如何判断当前数据集已经存在相同的记录!!
- 使用DSPACK开发疑难问题高分求助
- 打开带有ADOQUERY、ADOTABLE的Form出错?
- treeview结点反复选中并及时更新imageindex(类似于checkbox控件)
- 数据库字段
- 如何删除一个控件?
- idTCPserver和clientsocket互发数据和接收数据
- 流文件只能够用一次么?是不是用了一次以后要“归位”- reset?
- 谁有用ADO连数据库的例子阿,给100分!
- delphi怎样用IE浏览器浏览?
在我的主页中
http://yckxzjj.vip.sina.com/delphi/yuanma/FileAttrib.zip
有机会多交流吧!
利用递归实现删除某一目录下所有文件
var Form1: TForm1;
rec_stack:array [1..30] of TSearchRec;
rec_pointer:integer;
Del_Flag:Boolean;
------------------------------------------------------------------ ------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;
---------------------------------------------------------Del_Flag:=True;
rec_pointer:=30;
DeleteTree('c:\temp');
if Del_Flag then Application.MessageBox(PChar('目录c:\temp的内容已成功清除!'),'信息',MB_OK);
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;type
TForm1 = class(TForm)
Label1: TLabel;
Edit1: TEdit;
Button1: TButton;
function DoReMoveDir(sDirName:string):Boolean;
function DeleteDir(sDirName:string):Boolean;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.DFM}//删除目录的函数
function TForm1.DeleteDir(sDirName: string): Boolean;
Var
a:boolean;
begin
if Length(sDirName)<=0 then
exit;
//...删除
a := DoReMoveDir(sDirName) and RemoveDir(sDirName);
result := a;
end;function TForm1.DoReMoveDir(sDirName: string): Boolean;
Var
hFindFile:Cardinal;
tfile:string;
sCurDir:string;
bEmptyDir:Boolean;
FindFileData:WIN32_FIND_DATA;
begin
//如果删除的是空目录,则置bEmptyDir为TRUE
//初始时,bEmptyDir为TRUE
bEmptyDir := TRUE;
//现保存当前目录
sCurDir := GetCurrentDir;
SetLength(sCurDir,Length(sCurDir));
ChDir(sDirName);
hFindFile := FindFirstFile('*.*',FindFileData);
if hFindFile<>INVALID_HANDLE_VALUE then
begin
repeat
tfile := FindFileData.cFileName;
if (tfile='.') or (tfile='..') then
begin
bEmptyDir := bEmptyDir And True;
Continue;
end;
//不是空目录,置bEmptyDir为FALSE
bEmptyDir := FALSE;
if FindFileData.dwFileAttributes=FILE_ATTRIBUTE_DIRECTORY then
begin
if sDirName[Length(sDirName)]<>'\' then
DoReMoveDir(sDirName+'\'+tfile)
else
DoReMoveDir(sDirName+tfile);
if not ReMoveDirectory(PChar(tfile)) then
result := False
else
result := True;
end
else
begin
if not DeleteFile(PChar(tfile)) then
result := False
else
result := True;
end;
until FindNextFile(hFindFile,FindFileData)=False;
end
else
begin
ChDir(sCurDir);
result := False;
exit;
end;
//如果是空目录,则删除该空目录
if bEmptyDir then
begin
//返回上一级目录
ChDir('..');
//删除空目录
ReMoveDirectory(PChar(sDirName));
end;
//回到原来的目录下
ChDir(sCurDir);
result := True;
end;procedure TForm1.Button1Click(Sender: TObject);
var
a:boolean;
begin
if trim(Edit1.text)<>'' then
begin
a := DeleteDir(Edit1.text);
if a=true then
begin
ShowMessage('你已成功的删除了该目录!');
end;
end;
end;end.
可以达到要求
你删除了目录后再新建一个空的就是了