【问题标题】:How to prevent .dfm files from breaking string values from middle of words? [closed]如何防止 .dfm 文件破坏单词中间的字符串值? [关闭]
【发布时间】:2017-08-22 05:03:21
【问题描述】:

我正在使用 Grep Search 在我的项目的所有 .pas 和 .dfm 文件中搜索表的名称。它只能在 .pas 文件中找到结果,而我确信至少有一个数据集使用该表。我在 .dfm 文件中搜索了数据集的名称,这就是我发现的:

  object DtsRPCondition: TADODataSet
    Connection = ConnMain
    CursorType = ctStatic
    CommandText = 
      'select FromDay, ToDay, ToTime, Daily, DayOfWeek from Tbl_Reserve' +
      'ValidDay'
   ...

这使得搜索 .dfm 文件变得毫无用处,因此我需要一个控制写入 .dfm 文件的选项或另一个可以处理此问题的搜索工具。

【问题讨论】:

  • 保存为文本的 DFM 会以固定长度破坏字符串,无论内容如何,​​您对此无能为力。保存为二进制的 DFM 不会这样做。
  • EMBT 不太可能改变.dfm 文件的格式。也许您需要考虑在代码中(在.pas 文件中)编写可能需要搜索的文本,以便您可以根据需要将其格式化为搜索友好。
  • Delphi 只会将这样的字符串分成它认为太长的多行。简单的解决方法是自己添加换行符。如果您在 from 之前添加一个,则 grep 应该开始为您工作。
  • @TomBrunberg 我对此无能为力,这是一个古老的项目,甚至没有一篇文档。在修复错误之前,我必须先发现设计。
  • 结束投票者:哪个堆栈站点适合此类问题?

标签: delphi full-text-search delphi-2010 dfm


【解决方案1】:

您可以将 dfm 文件转换为二进制文件,而无需使用 Delphi 捆绑的 Convert 实用程序覆盖文本 dfm 文件:

convert -b -s -ebin *.dfm

其中-b = 二进制输出,-ebin 表示使用 bin(或任何其他您想要的)作为新文件的扩展名,-s 表示递归子目录。

这将为 eash DFM 创建一个“bin”文件。如上所述,这些中不会有自动换行。虽然它们是二进制的,但它们应该是 grepable 的,并且可用于识别您需要查看的 DFM。

【讨论】:

  • 有些人喜欢结束问题。其他人(比如你)确实会回答他们。谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-03
  • 2021-08-29
  • 2021-12-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多