我在旧 Delphi程序(D7)上进行维护时遇到问题。很多程序逻辑都在DPR文件中(这不是一个窗口程序),有些单元提供了访问数据库的功能。我们需要从DB单元中进行一些调试,但调试功能在DPR中。我们不能轻易剥离调试功能,因为它使用DPR独有的东西,比如它的主管道。将它分开就像试图分开意大利面条和肉丸酱。
那么我们如何从下级使用单元调用在DPR范围内声明的函数?什么是C ++中的::运算符的等价物?
请不要告诉我重新设计应用程序。我很乐意,但我们不会得到必要的时间。此外,如果我们重新设计这只小狗,它将不会在德尔福。
答案 0 :(得分:14)
您可以在单元中声明与DPR中函数的签名匹配的方法变量。在程序的最开始,您将方法变量设置为函数。在单元内部,您可以调用方法变量。
示例:
(DPR)
uses
Unit1;
function DoSomething(Par: Integer): Integer;
begin
...
end;
...
begin
DoSomethingVar := DoSomething;
...
end;
(单位)
unit Unit1;
interface
...
var
DoSomethingVar: function(Par1: Integer): Integer;
...
implementation
...
SomeResult := DoSomethingVar(SomeParameter);
...
答案 1 :(得分:4)
你做不到。单位层次结构是严格的。
有两种可能的选择:
答案 2 :(得分:3)
我不知道如何在其他单元中使用.dpr中的函数,但如果必须更改代码,只需将.dpr更改为普通单位,然后在新的.dpr和其他单位中使用它的函数/例程。 / p>
答案 3 :(得分:0)
.dpr是最基础的pascal项目文件。
我们可以使用项目中的任何单元文件,因此,您可以使用 单位中的职能/程序。
如有必要,您可以在设备名称前加上访问权限 功能/过程。
如果函数/过程属于特定类,则需要 创建一个实例来访问函数/过程,因为 这是一种方法。
无论如何,Delphi使用object pascal作为核心,你可以访问 任何必要的方法/程序/功能/属性与合法 帕斯卡概念和对象帕斯卡概念。
无论你需要调用哪个文件,只有一个文件除外 是一些外部库的decalaration文件。