function TFormMain.CopyDirectory(PCopy:string;PUpdate:string)
var
SHFOS1:TSHFileOpStruct;
begin
with SHFOS1 do
begin
Wnd := Handle;
WFunc := FO_COPY;
pFrom := 'e:\testdata';
pTo := 'e:\backup';
fFlags := FOF_NOCONFIRMMKDIR or FOF_RENAMEONCOLLISION;
fAnyOperationsAborted := False;
end;
if SHFileOperation(SHFOS1) <> 0 then
begin
ShowMessage('复制目录e:\testdata失败!');
exit;
end;
end;
以上是我复制目录的代码,但是总是无方读取源文件.怎么解决这个问题?
求救中
var
SHFOS1:TSHFileOpStruct;
begin
with SHFOS1 do
begin
Wnd := Handle;
WFunc := FO_COPY;
pFrom := 'e:\testdata';
pTo := 'e:\backup';
fFlags := FOF_NOCONFIRMMKDIR or FOF_RENAMEONCOLLISION;
fAnyOperationsAborted := False;
end;
if SHFileOperation(SHFOS1) <> 0 then
begin
ShowMessage('复制目录e:\testdata失败!');
exit;
end;
end;
以上是我复制目录的代码,但是总是无方读取源文件.怎么解决这个问题?
求救中
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,ShellApi;type
TForm1 = class(TForm)
procedure FormShow(Sender: TObject);
private
{ Private declarations }
function copydirectroy(ps:string;pc:string):integer;
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}
function TForm1.copydirectroy(ps:string;pc:string):integer;
var
T:TSHFileOpStruct;
begin
T.Wnd:= handle;
T.wFunc:=FO_COPY;
// T.pFrom:='e:\testdata';(直接赋值能够成功复制目录)
// T.pTo:= 'e:\backup';
T.pFrom:=PChar(ps);(使用PChar转换类型后就报错:不能读取源文件和磁盘)
T.pTo:= PChar(pc);
T.fFlags := FOF_NOCONFIRMMKDIR or FOF_RENAMEONCOLLISION;
T.fAnyOperationsAborted:= False;
T.hNameMappings:=nil;
T.lpszProgressTitle:=nil;
if SHFileOperation(T) = 0 then
showmessage('ok');
end;
procedure TForm1.FormShow(Sender: TObject);
var
ps,pc:string;
begin
ps :='e:\testdata';
pc := 'e:\backup';
copydirectroy(ps,pc);
end;end.
问题处在使用PChar转换类型后会报错,为什么啊?
pc:=pc+#0;
刚测试过。