procedure TForm1.Button1Click(Sender: TObject); var DirInfo: TSearchRec; r : Integer; begin if SaveDialog1.Execute then begin if CreateDir(SaveDialog1.FileName)= false then ShowMessage('不能创建目录:'+SaveDialog1.FileName); r := FindFirst(ExtractFilePath(Application.Exename)+'dbf\*.*', FaAnyfile, DirInfo); while r = 0 do begin if ((DirInfo.Attr and FaDirectory <> FaDirectory) and (DirInfo.Attr and FaVolumeId <> FaVolumeID)) then CopyFile(pChar(ExtractFilePath(Application.Exename)+'dbf\'+DirInfo.Name), pChar(SaveDialog1.FileName+'\'+DirInfo.Name),True); r:=FindNext(DirInfo); end; SysUtils.FindClose(DirInfo); end; end;
删除目录:function DelDirectory(const Source:string): boolean; var fo: TSHFILEOPSTRUCT; begin FillChar(fo, SizeOf(fo), 0); with fo do begin Wnd := 0; wFunc := FO_DELETE; pFrom := PChar(source+#0); pTo := #0#0; fFlags := FOF_NOCONFIRMATION+FOF_SILENT; end; Result := (SHFileOperation(fo) = 0); end; 复制目录: function CopyDirectory(const Source, Dest: string): boolean; var fo: TSHFILEOPSTRUCT; begin FillChar(fo, SizeOf(fo), 0); with fo do begin Wnd := 0; wFunc := FO_COPY; pFrom := PChar(source+ #0 ); pTo := PChar(Dest+ #0 ); fFlags := FOF_NOCONFIRMATION+FOF_NOCONFIRMMKDIR ; end; Result := (SHFileOperation(fo) = 0); end;重新命名: //RenDirectory('d:\wt2','d:\bcde'); function RenDirectory(const OldName,NewName:string): boolean; var fo: TSHFILEOPSTRUCT; begin FillChar(fo, SizeOf(fo), 0); with fo do begin Wnd := 0; wFunc := FO_RENAME; pFrom := PChar(OldName+ #0 ); pTo := pchar(NewName+ #0 ); fFlags := FOF_NOCONFIRMATION+FOF_SILENT; end; Result := (SHFileOperation(fo) = 0); end; //Copy 多个文件的处理: function CopyFiles(const Source,Dest: string): boolean; var fo: TSHFILEOPSTRUCT; begin FillChar(fo, SizeOf(fo), 0); with fo do begin Wnd := 0; wFunc := FO_COPY; pFrom := @source[1]; pTo :=pchar(dest); fFlags := FOF_NOCONFIRMATION+FOF_NOCONFIRMMKDIR ; end; Result := (SHFileOperation(fo) = 0); end;procedure TForm1.Button1Click(Sender: TObject); var str:string; i:integer; begin if opendialog1.Execute then begin for i:=0 to OpenDialog1.Files.Count-1 do str:=str+OpenDialog1.Files.strings[i]+ #0 ; showmessage(str); str:=str+ #0 ; CopyFiles(str, 'd:\temp' ); end; end;
{ ----------------------------------------------------- } {copy整个目录 } { ----------------------------------------------------- } function TMainForm.CopyDir(FromDir, ToDir: string): boolean; var T : TSHFileOpStruct; begin With T do Begin //Wnd:=Fm_Create_Question.Handle ; Wnd:=Application.Handle; wFunc:=FO_COPY ; pFrom:=Pchar(FromDir); pTo:=pchar(ToDir); hNameMappings:=nil; lpszProgressTitle:=nil; fFlags:=FOF_NOCONFIRMATION; End; SHFileOperation(T); result := true; end;
var
DirInfo: TSearchRec;
r : Integer;
begin
if SaveDialog1.Execute then
begin
if CreateDir(SaveDialog1.FileName)= false then
ShowMessage('不能创建目录:'+SaveDialog1.FileName);
r := FindFirst(ExtractFilePath(Application.Exename)+'dbf\*.*', FaAnyfile, DirInfo);
while r = 0 do
begin
if ((DirInfo.Attr and FaDirectory <> FaDirectory) and
(DirInfo.Attr and FaVolumeId <> FaVolumeID)) then
CopyFile(pChar(ExtractFilePath(Application.Exename)+'dbf\'+DirInfo.Name),
pChar(SaveDialog1.FileName+'\'+DirInfo.Name),True);
r:=FindNext(DirInfo);
end;
SysUtils.FindClose(DirInfo);
end;
end;
var
fo: TSHFILEOPSTRUCT;
begin
FillChar(fo, SizeOf(fo), 0);
with fo do
begin
Wnd := 0;
wFunc := FO_DELETE;
pFrom := PChar(source+#0);
pTo := #0#0;
fFlags := FOF_NOCONFIRMATION+FOF_SILENT;
end;
Result := (SHFileOperation(fo) = 0);
end;
复制目录:
function CopyDirectory(const Source, Dest: string): boolean;
var
fo: TSHFILEOPSTRUCT;
begin
FillChar(fo, SizeOf(fo), 0);
with fo do
begin
Wnd := 0;
wFunc := FO_COPY;
pFrom := PChar(source+ #0 );
pTo := PChar(Dest+ #0 );
fFlags := FOF_NOCONFIRMATION+FOF_NOCONFIRMMKDIR ;
end;
Result := (SHFileOperation(fo) = 0);
end;重新命名:
//RenDirectory('d:\wt2','d:\bcde');
function RenDirectory(const OldName,NewName:string): boolean;
var
fo: TSHFILEOPSTRUCT;
begin
FillChar(fo, SizeOf(fo), 0);
with fo do
begin
Wnd := 0;
wFunc := FO_RENAME;
pFrom := PChar(OldName+ #0 );
pTo := pchar(NewName+ #0 );
fFlags := FOF_NOCONFIRMATION+FOF_SILENT;
end;
Result := (SHFileOperation(fo) = 0);
end;
//Copy 多个文件的处理:
function CopyFiles(const Source,Dest: string): boolean;
var
fo: TSHFILEOPSTRUCT;
begin
FillChar(fo, SizeOf(fo), 0);
with fo do
begin
Wnd := 0;
wFunc := FO_COPY;
pFrom := @source[1];
pTo :=pchar(dest);
fFlags := FOF_NOCONFIRMATION+FOF_NOCONFIRMMKDIR ;
end;
Result := (SHFileOperation(fo) = 0);
end;procedure TForm1.Button1Click(Sender: TObject);
var
str:string;
i:integer;
begin
if opendialog1.Execute then
begin
for i:=0 to OpenDialog1.Files.Count-1 do
str:=str+OpenDialog1.Files.strings[i]+ #0 ;
showmessage(str);
str:=str+ #0 ;
CopyFiles(str, 'd:\temp' );
end;
end;
{copy整个目录 }
{ ----------------------------------------------------- }
function TMainForm.CopyDir(FromDir, ToDir: string): boolean;
var T : TSHFileOpStruct;
begin
With T do
Begin
//Wnd:=Fm_Create_Question.Handle ;
Wnd:=Application.Handle;
wFunc:=FO_COPY ;
pFrom:=Pchar(FromDir);
pTo:=pchar(ToDir);
hNameMappings:=nil;
lpszProgressTitle:=nil;
fFlags:=FOF_NOCONFIRMATION;
End;
SHFileOperation(T);
result := true;
end;