对不起,这是一个非常新手的问题.
我正在进行维护这个庞大的应用程序.它有5种不同的形式.我们将全局变量放在一个单元中(uGlobal).但我似乎无法从数据单元(uData)访问它.
我有这个:
Unit uGlobal
type
TmyType: (alpha, beta);
...
Unit uGlobal
Stuff: TmyType <- error, undeclared indentifier
Run Code Online (Sandbox Code Playgroud)
当我试图将uGlobal放入uData的使用部分时,它会抱怨循环引用.所以,这里有点无能为力.他们都在同一个项目中.这是使用BDS 2006.
你有一个循环引用,因为你有uGlobal
想要利用内容的东西,uData
反之亦然.循环引用是大型项目中的一个大问题,因为它们大大增加了复杂性 - 如果你有循环依赖,它就变得更像一个BIGGER单元.我怀疑在您的项目被认为是大型项目之前还有很长的路要走,更不用说"大规模"了.;)
您有两种可能的解决方案:
大卫已经给出了答案:至少有一个单位必须使用实施部分中的另一个.
uData interface
并在其中引用了uGlobal interface
,然后是uGlobal
需求 的接口,uData
并且需要相应的uses子句.uData implementation
在任何地方引用了一个类型uGlobal
,那么uData implementation
必须将该声明移动到接口部分.uGlobal interface
必须它只从当时的实现部分引用,uData
那么uses子句在实现部分就可以了.删除循环依赖关系需要将单位分解为更易于管理的较小单位.为此,您必须了解应用程序中每个事物之间的依赖关系.例如:
uGlobal
声明A和C.uData
声明B需要C在这种情况下你所要做的就是在那里的C处声明一个新的单位.
uGlobal
和uData
将使用uNewUnit
我不以任何方式提倡你与uGlobal的方法.事实上,这是一个非常糟糕的主意,当你的项目开始变大时,它会在2个方面给你带来很大的时间.不幸的是,这个解释本身就是一个巨大的答案.
归档时间: |
|
查看次数: |
1279 次 |
最近记录: |