Как запустить процедуру из другого модуля? - PullRequest
7 голосов
/ 11 сентября 2009

Ну, это вопрос n00b, но я до сих пор не могу понять. У меня есть блок main с процедурой Discard(). Теперь у меня есть другой блок engine, и я хочу запустить из него процедуру Discard() блока main. У меня есть основной в uses разделе engine.pas. Я пытался вызвать процедуру с main.Discard(), но безрезультатно. Что я делаю не так?

Ответы [ 2 ]

7 голосов
/ 11 сентября 2009

Вам необходимо поместить подпись процедуры в ваш интерфейс, например так:

unit main;

interface

procedure Discard();

implementation

procedure Discard();
begin
//do whatever
end;

Другие устройства могут «видеть» только то, что перечислено в разделе интерфейса.

6 голосов
/ 11 сентября 2009

В блоке «Main» вы объявляете Discard в разделе «interface»:


unit Main;

interface

uses ...

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

implementation

... // code

Теперь в блоке «Двигатель» вы добавляете «Основной» в раздел «Использование».

uses Main, ...

Вот и все, теперь вы можете позвонить Discard(...). Если существует более одного Discard(), вы можете явно позвонить на this Discard(), используя Main.Discard().

...