Delphi 如何复制多个文件并使用通配符
你知道为什么这样不行吗?没有错误,我的文本文件就是不复制Delphi 如何复制多个文件并使用通配符,delphi,Delphi,你知道为什么这样不行吗?没有错误,我的文本文件就是不复制 procedure TForm1.CopyFiles(Source, Target: string); var FO: TShFileOpStruct; begin FillChar(FO,SizeOf(FO),#0); FO.Wnd := Form1.Handle; FO.wFunc := FO_COPY; FO.pFrom := PChar(Source); FO.pTo := PChar(Target)
procedure TForm1.CopyFiles(Source, Target: string);
var
FO: TShFileOpStruct;
begin
FillChar(FO,SizeOf(FO),#0);
FO.Wnd := Form1.Handle;
FO.wFunc := FO_COPY;
FO.pFrom := PChar(Source);
FO.pTo := PChar(Target);
ShFileOperation(FO);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
CopyFiles('c:\test\*.txt','c:\test2\');
end;
您没有错误,因为您没有检查调用
SHFileOperation
的返回值。可能有错误,但您无法知道,因为您忽略了检查错误
另一个问题是,如文档中所述,无法双null终止字符串。所以,就像这样:
FO.pFrom := PChar(Source + #0);
FO.pTo := PChar(Target + #0);
鉴于您所犯的这些错误,我建议您再次仔细阅读文档。您是否检查了
SHFileOperation
的结果?不知道如何检查,您介意解释一下吗?不要在TForm1
方法中使用全局变量Form1
。使用Self
,或者省略它,从而隐式地使用它。一个非常明智的做法是删除全局表单变量。你介意我问为什么这是个好主意吗?当你有两个表单实例时会发生什么?此时,使用全局变量的代码将始终引用同一实例。在20世纪90年代早期,添加这些全局变量只是为了方便VB开发人员迁移到Delphi。全局变量通常被认为是一件坏事:而且