如何在DPR范围内访问delphi函数

如何在DPR范围内访问delphi函数,delphi,Delphi,我对旧的Delphi程序(D7)的维护有问题。很多程序逻辑都在DPR文件中(这不是一个窗口程序),有些单元提供了对数据库的访问等功能。我们需要从DB单元中进行一些调试,但调试功能在DPR中。我们不能轻易地去掉调试功能,因为它使用了DPR特有的东西,比如它的主管。把它分开就像试着把意大利面和肉丸酱分开一样 那么,我们如何调用从下级使用的单元在DPR范围内声明的函数呢?等价于::C++中的运算符?< /P> 请不要告诉我重新设计应用程序。我很想去,但我们没有必要的时间。另外,如果我们重新设计这只小狗

我对旧的Delphi程序(D7)的维护有问题。很多程序逻辑都在DPR文件中(这不是一个窗口程序),有些单元提供了对数据库的访问等功能。我们需要从DB单元中进行一些调试,但调试功能在DPR中。我们不能轻易地去掉调试功能,因为它使用了DPR特有的东西,比如它的主管。把它分开就像试着把意大利面和肉丸酱分开一样

那么,我们如何调用从下级使用的单元在DPR范围内声明的函数呢?等价于::C++中的运算符?< /P>
请不要告诉我重新设计应用程序。我很想去,但我们没有必要的时间。另外,如果我们重新设计这只小狗,它就不会在德尔福了。

你不能。单元层次结构是刚性的

有两种可能的选择:

  • 将.dpr的相关零件拉到新装置上。请记住,将使用转移到实现可能会中断导入周期。createform*的东西可能无法安全移动,这可能会让项目经理感到不安
  • 或者定义一些回调函数(函数、方法类型,如C中的functionpointer),并将代码从相关单元初始化移到一个从.dpr调用的过程(如果需要)

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

您可以在单元中声明一个方法变量,该变量与dpr中函数的签名相匹配。在程序开始时,将方法变量设置为函数。在单元内部调用方法变量

例如:

(朝鲜)

(单位)


.dpr是最基本的pascal项目文件

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

如有必要,您可以在单元名称前加前缀以访问 职能/程序

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

无论如何,Delphi使用对象pascal作为其核心,您可以访问 具有法律效力的任何必要方法/程序/功能/属性 pascal概念和对象pascal概念

无论您需要调用哪个文件,并且除了
是一些外部库的贴花文件。

Sinple,优雅,有效,谢谢。这将为我们赢得适当重构代码的时间。
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);
...