ios - 使用 iOS 的 XE2/Firemonkey 下的 FindFirst() 有问题吗?

标签 ios delphi freepascal firemonkey

对于 iPhone Firemonkey 应用程序,我将文件(图像)存储在“tmp”文件夹中并在我的应用程序中使用它们。我希望能够通过按需删除所有“.jpg”文件来刷新缓存,但我似乎无法在 FindFirst() 调用中以编程方式匹配它们。

我正在使用一个简单的 FindFirst()/FindNext()/FindClose() 循环来列出(和删除)文件夹的内容。

在 Windows 下,代码可以完美运行。 iOS (iPhone) 下的同一应用程序始终为 FindFirst() 调用返回值 -1(错误),并且 SearchRec.Name 为空。我曾尝试使用各种文件模式,包括“”但没有成功。

我知道这些文件存在是因为我可以毫无错误地读取和写入它们(在 iOS 和 Windows 下),并且它们的内容是正确的。 FileExists() 检查也会返回 True。

此外,如果我指定一个没有通配符的文件模式来检查已知文件(这实际上不是 FindFirst() 调用的重点),调用永远不会返回(再次这在 Windows 下没问题)!

有没有人在 iOS 下对此有任何成功并可以提供任何想法?

谢谢,

编辑:按要求演示问题的代码片段。 注意:_sFolderName 包含我确认绝对正确的缓存文件夹名称。

function GetCacheFileList : string;
var
  iResult: integer;
  sr: TSearchRec;
  sPath,
  sTemp: string;
  sFilename : TFilename;
begin
  sTemp     := '';
  sFilename := _sFolderName + '*.jpg';
  //
  iResult := FindFirst(sFilename, faAnyFile, sr);  // ALWAYS RETURNS -1 under iOS
  while (iResult = 0) do
  begin
    sTemp := sTemp + sr.Name + sLineBreak;
    iResult := FindNext(sr)
  end; { while }
  //
  FindClose(sr);
  Result := sTemp
end;

最佳答案

我不知道 FindFirst 等在非 Windows 平台上的支持情况如何,但我确实记得 Delphi 团队的某个人曾经说过 IOUtils 单元中的例程专门设计用于使文件 I/O 适合跨平台编码。您是否尝试过在 TDirectory 上使用文件搜索方法?

关于ios - 使用 iOS 的 XE2/Firemonkey 下的 FindFirst() 有问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8207377/

相关文章:

delphi - 如何创建线程保存文件而不覆盖现有文件?

arrays - 为什么 Pascal const 数组实际上不是常量?

module - 在 Pascal 中的另一个文件夹上使用单位

ios - 核心数据保存关闭

ios - centerXAnchor 和 center.x 的区别

ios - 我如何从 xib 创建自定义 uiview

delphi - 如何在 Delphi 10.3.3 中访问 TWebBrowser.Document 时克服内存泄漏

ios - 使用自定义 URL 方案将 PDF url 发送到使用 as3 和 FlashBuilder 4.6 的 iBooks 应用程序?

amazon-web-services - 在Delphi 10.3中发出AWS Signature Version 4请求,将Python代码移植到Delphi

pascal - 有没有办法确定对对象过程的引用是否对应于 Pascal 中的对象实例?