Function F_FileOperation(const Source, Dest: string;ai_flag:integer;abl_Question:Boolean): boolean; {******************************************************** 函数功能:实现对文件的操作 入口 :ai_flag 1,xCOPY //拷贝目录下所有文件,包括子目录 2,xDELETE //删除目录所有文件,包括子目录 3,xMOVE //移动目录所有文件,包括子目录 SourcePath 源目录 DestPath 目标路径 abl_Question: //拷贝时是否出现提示 出口 :1、 成功 -1、失败 作者 : 时间 :2002-10-1 *********************************************************} var fo: TSHFILEOPSTRUCT; //目录结构 begin FillChar(fo, SizeOf(fo), 0); Case ai_flag of 1: fo.WFunc := FO_COPY; 2: fo.WFunc := FO_DELETE; 3: fo.WFunc := FO_MOVE; 4: fo.WFunc :=FO_RENAME else result := false; end; if abl_Question then fo.fFlags :=FOF_FILESONLY else fo.fFlags := FOF_NOCONFIRMATION+FOF_NOCONFIRMMKDIR +FOF_SILENT; with fo do begin Wnd := 0; pFrom := PChar(source+#0); pTo := PChar(Dest+#0); end; Result := (SHFileOperation(fo) = 0); end;创建文件夹如楼上所说
1) if not DirectoryExists(sDirName) then //如果目錄不存在 ForceDirectories(sDirName); //強迫建立目錄 2) function RemoveTree(strDirName:string):Boolean; // 刪除路徑 var lpFileOp: TSHFileOpStruct; begin with lpFileOp do begin Wnd :=0; wFunc := FO_DELETE; pFrom := pchar(strDirName+#0);//此?要?除的文件或目?,支持*、? pTo := nil; fFlags :=FOF_NOCONFIRMATION;//不?示?度??框 hNameMappings := nil; lpszProgressTitle := nil; fAnyOperationsAborted := True; end; Result := (SHFileOperation(lpFileOp) = 0); end;
CreateDir('c:\windows\abc');
var shfs: SHFILEOPSTRUCT;
begin
with shfs do begin
Wnd := 0;
wFunc := FO_DELETE;
pFrom := PChar(dir);
pTo := nil;
fFlags := FOF_NOCONFIRMATION+FOF_NOERRORUI;
hNameMappings := nil;
fAnyOperationsAborted := False;
end;
SHFileOperation(shfs);
end;
先用findfirst,findnext查出所有文件,用deletefile删除,然后RemoveDir;
{********************************************************
函数功能:实现对文件的操作
入口 :ai_flag
1,xCOPY //拷贝目录下所有文件,包括子目录
2,xDELETE //删除目录所有文件,包括子目录
3,xMOVE //移动目录所有文件,包括子目录
SourcePath
源目录
DestPath
目标路径
abl_Question: //拷贝时是否出现提示
出口 :1、 成功
-1、失败
作者 :
时间 :2002-10-1
*********************************************************}
var
fo: TSHFILEOPSTRUCT; //目录结构
begin
FillChar(fo, SizeOf(fo), 0); Case ai_flag of
1: fo.WFunc := FO_COPY;
2: fo.WFunc := FO_DELETE;
3: fo.WFunc := FO_MOVE;
4: fo.WFunc :=FO_RENAME
else
result := false;
end;
if abl_Question then
fo.fFlags :=FOF_FILESONLY
else
fo.fFlags := FOF_NOCONFIRMATION+FOF_NOCONFIRMMKDIR +FOF_SILENT;
with fo do
begin
Wnd := 0;
pFrom := PChar(source+#0);
pTo := PChar(Dest+#0);
end;
Result := (SHFileOperation(fo) = 0);
end;创建文件夹如楼上所说
if not DirectoryExists(sDirName) then //如果目錄不存在
ForceDirectories(sDirName); //強迫建立目錄
2)
function RemoveTree(strDirName:string):Boolean;
// 刪除路徑
var
lpFileOp: TSHFileOpStruct;
begin
with lpFileOp do
begin
Wnd :=0;
wFunc := FO_DELETE;
pFrom := pchar(strDirName+#0);//此?要?除的文件或目?,支持*、?
pTo := nil;
fFlags :=FOF_NOCONFIRMATION;//不?示?度??框
hNameMappings := nil;
lpszProgressTitle := nil;
fAnyOperationsAborted := True;
end;
Result := (SHFileOperation(lpFileOp) = 0);
end;
ForceDirectories('c:\windows\abc\xyz\123');
ForceDirectories('c:\windows\abc\xyz\123');
我按你的:
删除文件夹(包含文件):uses shellapi;procedure DeleteFolder(dir: string);
var shfs: SHFILEOPSTRUCT;
begin
with shfs do begin
Wnd := 0;
wFunc := FO_DELETE;
pFrom := PChar(dir);
pTo := nil;
fFlags := FOF_NOCONFIRMATION+FOF_NOERRORUI;
hNameMappings := nil;
fAnyOperationsAborted := False;
end;
SHFileOperation(shfs);
end;
怎么不行啊
你是怎么不行?我测试过可以。
只是把你的dir换成我的文件夹
文件夹中有文件
如果把dir换成某个文件
是可以的