Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Delphi 如何复制多个文件并使用通配符_Delphi - Fatal编程技术网

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。全局变量通常被认为是一件坏事:而且