用代码替换非可视组件

时间:2010-06-14 13:14:49

标签: delphi delphi-7

“用代码替换非可视组件”是Delphi 7中经过验证的优化技术。主要是关于数据库访问。

4 个答案:

答案 0 :(得分:9)

您引用的网站谈到用对话框替换对话框组件而不使用任何组件的对话框。另一种方法是编写几行代码,以便在需要时设置和显示对话框,并完全跳过该组件。但这并不是速度大小的优化。这不是速度优化,因为你的代码完全可以完成组件本来会做的事情,并且它不是大小优化,因为任何一个组件在程序中占用的空间都可以忽略不计。

数据库组件不像对话框组件那样容易替换。 Delphi中几乎所有旨在使用标准数据库组件的后代。如果您不使用这些组件,那么您将根本不使用任何Delphi的数据库功能。如果您愿意,可以使用数据库库的本机API,但是如果您的目标是真正的优化并且您没有将组件识别为程序非最佳行为的来源,那么我认为这将是愚蠢的。考虑在没有数据库组件的情况下重写程序需要花费多少时间和精力。

答案 1 :(得分:4)

我没有看到基于表单的数据集/查询/表/等,如何比在代码中创建的更快或更慢。但是,我喜欢将它们放在代码中,因为它更容易维护。我已经看到在组件中嵌入了SQL的屏幕,然后它在代码中被覆盖了。然后我必须停下来调查以确定哪个SQL实际上有效。有时表单中的SQL是好的,有时它会被使用一段时间然后被代码打败,有时候它永远不会活动,并且SQL在表单创建中胜过。所以我必须确定这是设计,还是只是草率剩饭。此外,如果它们位于.DFM而不是.PAS中,则很容易错过代码评审中的SQL更改。即我并不总是看.DFM,因为我对标签标题是否改变或按钮移动不感兴趣。

因此,尽管它适用于原型设计,但在生产代码方面,最好在.pas文件中使用所有数据库逻辑(SQL,表和字段定义)。

更新:我终于试了CnPack。在众多好东西中,有一个很棒的工具叫做“将所选组件转换成代码”。表单设计向导|更多... |将所选组件转换为代码。它为你做到了这一切。

答案 2 :(得分:1)

这不是组件或组件的问题。如果涉及到数据库访问,那么BDE非常慢,因此更改它是一个很好的举措。

顺便说一下 - 优化不是关于'经过验证的技术' - 而是关于识别问题并解决问题。如果问题恰好是缓慢的数据库访问,那么这就是你必须改变的。

答案 3 :(得分:0)

一般没有。使用非可视组件没有额外的开销。它的创建速度非常快,并且在运行时的工作速度与“在代码中创建”的速度完全相同。