单元引用语句“uses”的使用位置问题(100分)

  • 主题发起人 主题发起人 ildg
  • 开始时间 开始时间
I

ildg

Unregistered / Unconfirmed
GUEST, unregistred user!
每个窗口单元中有两个uses,
上面有一个,
中间有一个。
自定义的单元最好是放在中间的单元中,我在某个书上看到的,怕出什么问题,而系统的单元都可以放在
顶部的uses中而不会出问题,为什么呢?
我要怎样才能使我自己的单元也能安全地放在顶部的uses中呢?
谢谢~
 
我想应该是“抽象的”和“实际的”的区别吧。
 
没有什么太大的区别。
放在interface段的uses声明会将声明中的单元在编译时包含进可执行文件中,
而在implemention段的uses声明会将声明中的单元在编译时不会这样。
:)
 
很简单,只要不循环引用,都可以放在上面的
比如unit1在上面引用了unit2,那么unit2就不能在上面的uses中引用unit1了,而且在unit2
上面的uses中引用的所有unit,都不能在其上面的uses中引用unit1
 
是的,没感觉有什么区别。两个相互引用的单元,只要不把对方放在相同的段上一般没问题
 
谢谢大家。
delphi自己的单元就可以循环引用,
其它的控件的单元也可以,
我想问一下我自己定义的单元怎样才能象delphi的单元那样可以循环引用呢?
好象要用一些宏对吗?
 
我习惯放在下面,delphi自己添加也是放在下面的
 
'boyface'
放在interface段的uses声明会将声明中的单元在编译时包含进可执行文件中,
而在implemention段的uses声明会将声明中的单元在编译时不会这样。
有道理!
 
无论interface和implemention的引用都会进行编译,并且放到执行文件中。
区别只是interface单元接口是暴露给其他单元引用的,而implemention不会
例如Unit2引用到了Unit1,那么如果要对Unit1进行修改,如果改变implemention(例如加上
uses Zlib;)而interface不变,则Unit2不会要求重新编译。
 
如果你有两个单元:Unit1、Unit2, 并且Unit1是主单元,那么Unit1可以在上面uses
单元Unit2;单元Unit2只能在下面uses单元Unit1。
但是,我推荐您尽量不要让Unit2引用Unit1,要尽可能的做到只单向引用,不然会引起
一些不必要的混乱而且也不符合封装的思想,unit1像知道Unit2的一些信息,完全可以在
Unit2当中声明接口来让Unit1知道,所以完全没有必要在Unit2当中去强行改变Unit1的东西
 
后退
顶部