如何从另一个单位运行程序?

Vla*_*lad 7 delphi scope procedures delphi-units

那么这个n00b问题,但我仍然无法弄清楚.我有单位main与程序Discard().现在我有另一个单位engine,我想从它Discard()的单位程序运行main.我有主要uses部分engine.pas.我试着打电话给程序,main.Discard()但没有好处.我究竟做错了什么?

Mas*_*ler 7

您需要将过程的签名放在界面中,如下所示:

unit main;

interface

procedure Discard();

implementation

procedure Discard();
begin
//do whatever
end;
Run Code Online (Sandbox Code Playgroud)

其他单位只能"看到"接口部分列出的内容.


Hav*_*ard 6

在"Main"单元中,您在"interface"部分声明Discard:


unit Main;

interface

uses ...

procedure Discard (...); // only the declaration, not the entire procedure

implementation

... // code
Run Code Online (Sandbox Code Playgroud)

现在在单元"引擎"中,将"Main"添加到"uses"部分.

uses Main, ...
Run Code Online (Sandbox Code Playgroud)

多数民众赞成,你Discard(...)现在可以打电话.如果有多个,Discard()你可以通过使用明确地调用 .Discard()Main.Discard()