关于单元间的依存关系,请各位大虾赐教(100分)

  • 主题发起人 主题发起人 Shuzi
  • 开始时间 开始时间
S

Shuzi

Unregistered / Unconfirmed
GUEST, unregistred user!
单元一多,我总搞不清楚谁先初始化,谁先终止化
有没有什么工具可以列出各单元之间的依存关系?
有没有什么原理可循?
有没有相关的资料?
 
单元按照你USES的顺序;
 
unita
Uses unit1 ,unit2,unit3
unit1
uses unitb
顺序 unitb,unit1unit2,unit3,unita
 
如果unit2中 uses unitc,unit3中uses unitd
那么a,b,c,d的顺序呢?
 
你可以用GExperts查看单元之间的依存关系。如果仅仅是想知道初始化的顺序,按F7单步
运行程序就知道了。
 
谢谢creation-zy大哥:
我刚配上GExperts,没用过,怎样查看单元间的依存关系?
 
我觉得理论上你没有必要知道的,每个单元都各自初始化自己,单元相互引用时,最好在
被引用单元的初始化结束时用一个全局(在Interface中定义)的变量通知其他单元已完成
初始化。
 
:SupermanTm
是这样,我们正在研发一套支撑平台,这里有十来个BPL,一百多个单元文件。有些单元
是必须依赖于其它单元的,包括其初始化或终止化过程。比如说我们在A单元定义了一个
全局变量,并在其初化中创建了它。别的单元需要用到它,假设B单元吧。当然,B单元Uses
中加上A单元,可以访问这个变量。但有时候B单元是绕了一大圈后才间接引用到A单元的。
比如说N单元的一个函数吧,它要访问A中的那个变量,但只是把函数指针赋给了B中的一个
变量,只有B单元终止化时才调用这个函数(指针)。这时候,是不是A单元已经终止化了
呢?就是说A中的那个变量已经不存在了。
所以我希望能有一个工具能描绘出程序启动时,先初化哪个单元,再初化哪个单元,。。
程序结束时,先结束哪个单元,再结束哪个单元。。。
 
可否将全局变量的声明集中一个单元内,让这个单元最后一个结束
 
我只能说你的程序结构非常不好!我写过很大型的程序也没有这么复杂的结构的!
 
確實存在先后關系.
 
程序结构是另外一个问题,我们现在是的确有这种需要,并且我相信是可以解决的
各位继续
 
单元初始化是深度遍历进行的。只要从各个引用单元依次进行下去,深度遍历一下,就知道了。
 
我认为也是你程序结构上有问题。
如果有很多单元无FORM ,
或者是公用单元,常用单元;
可以把他们打成RUNPACKGE 运行时包OR设计时包

 
基本上winion说的是正确的,我也依此搞了一个小程序列出单元顺序.但我总觉得这个问题
没有说透,希望大家再多说两句,所以暂不结帐
 
接受答案了.
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
D
回复
0
查看
1K
DelphiTeacher的专栏
D
I
回复
0
查看
855
import
I
后退
顶部