我只想复制pdf文件。如果我知道文件名,我正在使用此方法:
CopyFile(PChar(obPath.CaseTmpPath + '\' + currentCase.patientCase + '\Info_' + currentCase.patientCase + '.cxt'), PChar(obPath.ServerData + currentCase.patientCase + '\Info_' + currentCase.patientCase + '.cxt'), true);
这次,我不知道文件名。目录中有一些文件,例如pdf,jpegs。我只想复制pdf文件,但是如何?
如果仅使用Windows,并且对代码的可移植性不感兴趣,则可以恢复使用api:
uses
ShellApi;
function MultiFileCopy(const ASource, ADest: string): Boolean;
var
FO: TSHFileOpStruct;
begin
FillChar(FO, SizeOf(FO), #0);
FO.Wnd := 0;
FO.wFunc := FO_COPY;
FO.pFrom := PChar(ASource + #0);
FO.pTo := PChar(ADest + #0);
FO.fFlags := FOF_FILESONLY or FOF_NOERRORUI or FOF_NOCONFIRMATION or FOF_SILENT;
Result := (SHFileOperation(FO) = 0)and(not FO.fAnyOperationsAborted);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
ShowMessage(BoolToStr(MultiFileCopy('C:\*.pdf', 'X:\'), True));
end;
上面的代码包含一些使方法完全静音的技巧,请阅读有关标志的SHFileOperation和SetErrorMode的文档(因为David指出SetErrorMode(SEM_FAILCRITICALERRORS)
,在应用程序初始化期间应仅调用一次)
正如雷米(Remy)在评论#0中所说的,因为需要双null终止字符串。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句