uses 在不同的位置,效果一样?(0分)

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

stanely

Unregistered / Unconfirmed
GUEST, unregistred user!
interface部分的uses和implementation部分的效果都一样么?
至少对于use包含全局变量的单元来说,效果一样的。。

为什么delphi还要在两个不同的地方设置引用呢?
 
这样你能知道你在那里引用的它
 
效果不一样,在其他form中能否调用implenment中的变量吗?
 
interface部分的uses 只用于全局
implementation部分的只用于本Form
 
//implementation部分的只用于本Form
应该说用于本 Unit 更准确些
 
[8D][8D]有两个单元:unit1、unit2,在unit1的interface部分uses unit2,
且在unit2的interface部分uses unit1,程序编译时就会出错。
至少有一个应在implementation部分uses。
 
应尽可能放在implementation部分uses,正如sygzch所言。
 
同意sygzch所说的
一般自己写的unit,而且不包括窗口的,放在implementation后uses
 
to sygzch :
就是说为了编译不出错才这样做的?

to wangxiaoling:
那么unit 1的interface uses了 unit3,unit2 的什么部分写uses unit1,才能让unit2不用写uses unit3,就能用到unit3的内容呢?
是不是不能?

 
to sygzch :
就是说为了编译不出错才这样做的?

to wangxiaoling:
那么unit 1的interface uses了 unit3,
那么unit2 的什么部分写uses unit1,才能让unit2不用写uses unit3,就能用到unit3的内容呢?
是不是不能?
 
随便什么地方,只要你在unit2里任何地方引用了unit1就可以使用unit1的Interface
里uses的东西。只不过,如果你在unit2的impl...里uses unit1那么在其他引用unit2的
单元将不能使用unit3
 
to:DT
你回答的不太明了
 
为了编译不出错才这样做,这只是一个方面;
另外一个方面,是因为引用类型,举个例子:
假设在unit2中定义了一个类型:TAnyType,在unit1中如下引用:
unit unit1;

interface

uses unit2
//必须在此引用

type
TForm1 = class(TForm)
private
T: TAnyType
//TAnyType在unit2中定义
public

end;

implementation

end.
 
如果两个不同的单元文件要互相引用就要区别了,interface的uses在全程序中都可以引用
,若两个互相在这里引用就会引起循环引用,编译肯定出错,在implementation部分就没有
这种情况出现,所以我建议大家,如果不是要有其他用途,还是都在implementation后面
的uses中写上要引用的单元,可以避免循环引用,我的这个习惯可以保证不会出现这方面
的错误了!
 
后退
顶部