我有两个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不允许我编译这两个单元?
答案 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。它处理来自原始帖子的单位没有问题。它也易于使用,完全满足我的要求。