如何在DPR范围访问delphi函数

时间:2009-07-27 10:30:10

标签: delphi

我在 Delphi程序(D7)上进行维护时遇到问题。很多程序逻辑都在DPR文件中(这不是一个窗口程序),有些单元提供了访问数据库的功能。我们需要从DB单元中进行一些调试,但调试功能在DPR中。我们不能轻易剥离调试功能,因为它使用DPR独有的东西,比如它的主管道。将它分开就像试图分开意大利面条和肉丸酱。

那么我们如何从下级使用单元调用在DPR范围内声明的函数?什么是C ++中的::运算符的等价物?

请不要告诉我重新设计应用程序。我很乐意,但我们不会得到必要的时间。此外,如果我们重新设计这只小狗,它将不会在德尔福。

4 个答案:

答案 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)

你做不到。单位层次结构是严格的。

有两种可能的选择:

  • 将.dpr的相关部分拉出到新单元。请记住,将实现移动到实现可能会破坏导入周期。 createform * stuff可能不安全,这可能会让项目经理感到不安。
  • 或定义一些回调函数(函数,方法类型,如C中的functionpointer),并将代码从相关单元初始化中移出到您在必要时从.dpr调用的过程。

答案 2 :(得分:3)

我不知道如何在其他单元中使用.dpr中的函数,但如果必须更改代码,只需将.dpr更改为普通单位,然后在新的.dpr和其他单位中使用它的函数/例程。 / p>

答案 3 :(得分:0)

.dpr是最基础的pascal项目文件。

我们可以使用项目中的任何单元文件,因此,您可以使用 单位中的职能/程序。

如有必要,您可以在设备名称前加上访问权限 功能/过程。

如果函数/过程属于特定类,则需要 创建一个实例来访问函数/过程,因为 这是一种方法。

无论如何,Delphi使用object pascal作为核心,你可以访问 任何必要的方法/程序/功能/属性与合法 帕斯卡概念和对象帕斯卡概念。

无论你需要调用哪个文件,只有一个文件除外 是一些外部库的decalaration文件。