2

我有两个 DWScript 单元文件:

unit unit1;                    | unit unit2;
                               | 
interface                      | interface
                               | 
procedure Proc1exec;           | procedure Proc2exec;
procedure Proc1;               | procedure Proc2;
                               | 
implementation                 | implementation
                               | 
uses unit2;                    | uses unit1;
                               | 
procedure Proc1exec;           | procedure Proc2exec;
begin                          | begin
  unit2.Proc2;                 |   unit1.Proc1;
end;                           | end;
                               | 
procedure Proc1;               | procedure Proc2;
begin                          | begin  
end;                           | end;

unit1的编译过程中,我得到

带有消息“未知名称“unit1.Proc1”的 ECompileError

在 IdwsProgram.Msgs.AsInfo 中包含以下文本:

语法错误:未知名称“unit1.Proc1”[行:14,列:9,文件:unit2]

请解释我如何编译这样的循环引用单元。

编辑:为了使讨论更接近我的要求,我将重新提出问题。为什么 DWScript 不允许我编译这两个单元?

4

2 回答 2

0

最后我切换到 PaxCompiler。它可以毫无问题地处理原始帖子中的单位。它也很容易使用,完全满足了我的要求。

于 2017-09-16T16:07:12.643 回答
0

一种解决方案是将所有东西放在一个单元中。

另一个是:

unit shared;

interface

procedure Proc1exec;
procedure Proc2exec;

implementation

uses unit1, unit2;

procedure Proc1exec;
begin
  unit1.proc1;
end;

procedure Proc2exec;
begin
  unit2.proc2;
end;

unit unit1;

interface

procedure Proc1;

implementation

procedure Proc1;
begin
  // do something useful
end;

end.

和类似的东西unit2

现在您的代码只需包括:

program Test;

uses
  unit1, unit2, shared;

begin
  Proc1exec;
  Proc2exec;
end.
于 2017-09-13T12:34:11.483 回答