如何在比较Delphi表单文件版本时,让Beyond Compare忽略某些差异?

58

我使用Beyond Compare(版本3.1.10)比较不同版本的Delphi表单文件,但我不想看到有关ExplicitTop、ExplicitLeft、ExplicitHeight和ExplicitWidth的差异。

细节: 这些行始终以多个空格字符开头,然后是"ExplicitXXX = "和一个数字。旧版Delphi没有这些行,因此我希望忽略添加到最新版本中的这些行的差异,我还希望忽略数字更改的差异。

有人知道如何做到这一点吗?

编辑: 重复(或类似):

如何配置BeyondCompare以忽略评论中SCM替换的文本?


1
可能是重复的问题:如何配置BeyondCompare以忽略注释中SCM替换的文本? - Svein Bringsli
但在我看来,这里有一个更好的答案。 - Francesca
另一个问题是关于在其他语法项(注释、字符串)中匹配文本,而BC尚不支持嵌套语法项,因此这里的解决方案在那里行不通。 - Zoë Peterson
4个回答

87
  1. 加载一对显示差异的 DFM 文件。
  2. 点击会话设置按钮(也称为带有裁判员图标的规则)或使用会话->会话设置菜单项。
  3. 切换到重要性选项卡,然后单击编辑语法...按钮以打开第二个对话框。
  4. 在顶部列表框下方点击New...按钮以打开第三个对话框。
  5. Element Name选项更改为类似于Explicit*的内容,将Text Matching更改为Explicit(Left|Top|Width|Height) = \d+,并选中Match character caseRegular expression复选框,然后单击OK,接着在第二个对话框中再次单击OK
  6. Explicit*现在应该出现在原始对话框的Grammar Elements列表中。取消选中它,然后在对话框底部的组合框中将其从仅用于此视图更改为更新会话默认值

3
太棒了,正是我所期望的答案。没有什么比一份好的指南更能胜任了 :-) - Svein Bringsli
5
尤其是当这话是直接来自当事人时。 - LachlanG
2
请注意,以下说明描述了如何将给定文本定义为“不重要”,这将使其默认情况下仍然可见(并带有蓝色)。您可以使用“忽略不重要的差异”切换来忽略/隐藏蓝色文本。 - kmote
1
更多最新版本请访问:http://www.scootersoftware.com/support.php?zz=kb_unimportantv3 顺便说一句,如果您能在代码文件比较中右键单击并将命名空间差异应用为不重要的会话(以应用于所有代码比较),那就太好了。 - Adam Tuliper

9

我不使用Beyond Compare,但如果你想让更新版本的Delphi停止添加(在我看来是无用的)Explicit*属性,你可以使用Andreas Hausladen的DDevExtensions


1
+1. 我一段时间前安装了DDevExtensions来摆脱这些属性,到现在为止我没有后悔过。 - Uli Gerhardt
1
这是问题的一部分。我的团队中有些开发人员使用这个扩展,而其他人则不使用。 - Svein Bringsli
@Svein:你不能说服他们Explicit*的东西不仅是多余的吗? - Uli Gerhardt
@Ulrich:我想是这样,但这仍然没有回答实际问题。除了显式值之外,我还想对页面控件的ActivePage属性执行相同的操作,因此我也想找到解决方案。 - Svein Bringsli

3
克雷格·彼得森的答案是正确的。但是!在“会话/会话设置”中,选项卡“重要性”并不总是可见的。总之,在文件夹列表视图中,它将不会出现。似乎某些文件类型也没有它,尽管我对此不是很清楚。BC有很多选项和插件,我敢打赌一定有解决方法,但我目前还可以接受。 http://www.scootersoftware.com/vbulletin/showthread.php?t=8457

3
在我的情况下(C#),我想忽略包含我更改的命名空间(因此,使用)的整行(参考演示-如果行中存在文本,请忽略整行)。
即:
namespace INSERT.NAMESPACE.HERE 
      changed to 
namespace INSERT.NAMESPACE.HERE.NEW

为了完成这个操作,在Craig的方案中的第5步,将文本匹配更改为:
" .\*INSERT.NAMESPACE.HERE.\* "

这是需要翻译的内容。

就是这样。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接