使用循环引用编译DWScript单元会产生ECompileError“Unknown Name”

时间:2017-09-13 11:58:36

标签: delphi dwscript

我有两个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 期间,我得到了

  

ECompileError,消息“未知名称”unit1.Proc1“'

在IdwsProgram.Msgs.AsInfo中使用以下文本:

  

语法错误:未知名称“unit1.Proc1”[line:14,column:9,   file:unit2]

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

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

2 个答案:

答案 0 :(得分: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.

答案 1 :(得分:0)

最后我切换到PaxCompiler。它处理来自原始帖子的单位没有问题。它也易于使用,完全满足我的要求。