Delphi 如何检查链接到组件的属性是否为;“丢失”吗;?

Delphi 如何检查链接到组件的属性是否为;“丢失”吗;?,delphi,Delphi,我使用的是Delphi2007。有时链接到组件的属性会丢失。这通常是操作属性和LookUpdates集。我有几次做了一些紧急的bug修复,并向客户发送了一个版本,结果有点灾难性,原因是:-) 有人知道一种方法来验证应该设置的属性是否真的被设置了,或者一种防止这种情况发生的方法吗?显然,您可以在代码中指定这样的值 但更重要的是,在提交到sourcecontrol之前,您必须区分每个文件。总是 确保您的dfm文件是文本,而不是二进制文件。然后,在签入/提交之前很容易看到不需要的更改 对我来说,分散一

我使用的是Delphi2007。有时链接到组件的属性会丢失。这通常是操作属性和LookUpdates集。我有几次做了一些紧急的bug修复,并向客户发送了一个版本,结果有点灾难性,原因是:-)
有人知道一种方法来验证应该设置的属性是否真的被设置了,或者一种防止这种情况发生的方法吗?

显然,您可以在代码中指定这样的值

但更重要的是,在提交到sourcecontrol之前,您必须区分每个文件。总是

确保您的dfm文件是文本,而不是二进制文件。然后,在签入/提交之前很容易看到不需要的更改

对我来说,分散一切已经阻止了许多潜在的错误


自动构建和测试系统也会让您对交付的内容有一定的信心。

您需要一种方法来验证值是否设置正确。嗯,你可以使用单元测试。只需启动一个表单,比较属性并完成


当然,比较dfm也是一种很好的方法,但它不考虑由于更改默认值或代码中的更改而引起的更改。

创建dunit测试项目。 在发布之前运行测试。
当测试失败时,鸣响所有的钟声。

您已经收到了一些关于如何检测何时发生这种情况的好答案(向上投票)。但防止这种情况发生的一种方法(有时)是确保已将所有参考单位添加到DPR中。例如,如果打开一个表单,其中包含引用数据模块上其他组件的组件,并且该数据模块尚未添加到DPR/项目中,则几乎可以保证IDE会删除这些引用,因为它会删除无法确定是否有效的引用。另一方面,如果数据模块位于DPR中,则IDE将能够找到它,并且从一开始就不太可能删除引用


不幸的是,这种情况仍然时不时发生,因此您仍然需要采取其他答案中详述的预防措施。但是,如果您还没有这样做,这将使事情变得更好。

当您向项目添加表单、数据模块或框架时,IDE会在dpr文件中的单元名称后插入一个小注释“tag”。根据我的经验,如果出于任何原因该标记不存在,IDE更容易丢失跨模块组件引用


如果您使用诸如thing之类的工具,我衷心支持在每次提交版本控制之前始终查看差异的想法。

我不想这么说,但在这些情况下,源代码控制可以有所帮助。即使有紧急的bug修复,您也应该将所有内容都检查到源代码存储库中(这是我个人的最爱)。在一个小补丁中,您可以通过更改了哪些文件来查看是否有任何意外更改。

我遇到的问题通常是在保存表单时指向IDE中未打开的其他表单的链接。我使用了代码和构建系统测试的组合来确保它工作,并在开发时告诉我一些断言。当我使用Delphi项目组将项目文件放在一起时,类似的事情也发生在我身上。我发现,一旦我使用它,数据库感知组件就失去了与表所在的数据模块的连接。我放弃了使用项目组。