有如下代码:
function MyfileOP(sourcename : string;pToname : string;strOP:string):Integer;
var
FData : TShFileOpStruct;
begin
Fdata.pFrom := Pchar(sourcename);
if strOP = 'Delete' then
begin
Fdata.wFunc := FO_DELETE;
Fdata.pTo := #0#0;
end
else
begin
Fdata.wFunc := FO_COPY;
Fdata.pTo := Pchar(pToname);
end;
FData.Wnd := Application.Handle ;
fData.fFlags := FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR ;
result := ShFileOperation( FData );
end;IF MyfileOP('C:\1234\123','D:\123\12','COPY') = 0 THEN
showmessage('copy ok!')
else showmessage ( 'error');老是出错,不知哪位大哥可以提供些例程。另外这些
FOF_NOCONFIRMATION
怎么的老搞不懂是怎么回事,想看到他复制的进度,但不用它提示其它东西,删除不想放到回收站而直接删。
function MyfileOP(sourcename : string;pToname : string;strOP:string):Integer;
var
FData : TShFileOpStruct;
begin
Fdata.pFrom := Pchar(sourcename);
if strOP = 'Delete' then
begin
Fdata.wFunc := FO_DELETE;
Fdata.pTo := #0#0;
end
else
begin
Fdata.wFunc := FO_COPY;
Fdata.pTo := Pchar(pToname);
end;
FData.Wnd := Application.Handle ;
fData.fFlags := FOF_NOCONFIRMATION or FOF_NOCONFIRMMKDIR ;
result := ShFileOperation( FData );
end;IF MyfileOP('C:\1234\123','D:\123\12','COPY') = 0 THEN
showmessage('copy ok!')
else showmessage ( 'error');老是出错,不知哪位大哥可以提供些例程。另外这些
FOF_NOCONFIRMATION
怎么的老搞不懂是怎么回事,想看到他复制的进度,但不用它提示其它东西,删除不想放到回收站而直接删。
解决方案 »
- IMAGE的转换问题
- Delphi 2006下的Webservice中文问题
- Fastreport中frReport的问题?在线等
- 客户端与服务器
- 怎么样使dbgrid有flat的效果?
- 一个好头痛的问题FLASH,与MEDIAPLAYER的各位帮一下手吧~~`
- 难度不是一点点!数据截取问题!
- 时间同步问题
- DirectoryListing.Count 错误
- windindance(风之舞) 来拿分!
- 在DELPHI中设置目录属性
- 请所有在http://expert.csdn.net/Expert/topic/1360/1360834.xml?temp=.6661798上Mark过的同志们进来拿分!
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;重新命名:
用MoveFile()或者下面的函数也可以。
//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;
但要有进度显示。
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
DirInfo: TSearchRec;
r : Integer;
begin
r := FindFirst('C:\Test\*.*', FaAnyfile, DirInfo);
while r = 0 do
begin
if ((DirInfo.Attr and FaDirectory<>FaDirectory) and
(DirInfo.Attr and FaVolumeId<>FaVolumeID)) then
if DeleteFile(pChar('C:\test\' + DirInfo.Name)) = false then
ShowMessage('Unable to delete : C:\test\' + DirInfo.Name);
r := FindNext(DirInfo);
end;
SysUtils.FindClose(DirInfo);
if RemoveDirectory('C:\Test') = false then
ShowMessage('Unable to delete direcotry : C:\test');
end;end.
thanks all!