delphi - Delphi仅复制具有某些扩展名的文件

标签 delphi

我只想复制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,并且对代码可移植性不感兴趣,则可以恢复使用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中所说的那样,之所以存在,是因为需要双null终止的字符串。

关于delphi - Delphi仅复制具有某些扩展名的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50002254/

相关文章:

mysql - MySQL中使用timediff函数计算12小时格式的时差

delphi - Delphi DLL 和 Delphi EXE 之间的回调功能

delphi - 获取用于打开关联应用程序的文件的文件名

algorithm - 如何从 Delphi 集合中获取最高值?

delphi - 判断exe文件是否经过UPX压缩的方法

delphi - Delphi XE2 中的 XML 数据绑定(bind)向导到哪里去了?

delphi - 使用虚拟类访问私有(private)字段

windows - UDP丢包

delphi - 如何确保 MAPI 客户端在启动时获得焦点?

android - 推送通知 GCM DELPHI XE8