我只想复制pdf文件。我正在使用这种方法,如果我知道文件名:
CopyFile(PChar(obPath.CaseTmpPath + '\' + currentCase.patientCase + '\Info_' + currentCase.patientCase + '.cxt'), PChar(obPath.ServerData + currentCase.patientCase + '\Info_' + currentCase.patientCase + '.cxt'), true);
这一次,我不知道文件名。目录中有一些文件,如pdfs,jpegs。我只是想复制pdf文件但是如何?
答案 0 :(得分:3)
如果您只使用Windows并且您对代码可移植性不感兴趣,则可以恢复为win 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中所说,因为需要双空终止字符串。