在delphi代码文件中第一个uses和impletation后的uses有什么不同?(50分)

  • 主题发起人 主题发起人 zlmark
  • 开始时间 开始时间
Z

zlmark

Unregistered / Unconfirmed
GUEST, unregistred user!
在delphi代码文件中第一个uses和impletation后的uses有什么不同?
 
前者是全局的,后者引用时必须带一个窗体对象在前面,
 
uses
widows
procedure a:tbitmap; //此时是正确的
impletation
uses
widows //如果写在这里,上面的的函数编译就会找不到tbitmap

如果单元AA use BB 而且BB 也use AA ,那么你必须将其中一个放在impletation后面引用
 
DELPHI在使用变量的之前需要先声明。第一个USES中定义的一系列系统单元,如Forms
等如果放在第二个USES中将导致TFORM类找不到,看一下类的继承就可以知道,TFORM类是
在FORMS类中定义的。
其他的一些类的单元定义也类似。因为有很多如CONTROLS等类中定义了很多常用的控件,
所以系统将默认添加。
所以第一个USES和第二个USES其实没什么不同,唯一的不同是在第二个USES前系统将定义一
大堆东西。
 
前一个通常是引用某一个单元。
第二个通常是引用某个窗体。

如果在第一个里面引用窗体有可能会出现循环引用的错误,
原因是delphi在编译的时候不知该怎么包含文件,
 
一个是全局的
一个是局部的
 
一般自己写的unit放在imeplementation 后use
 
都已经说到这个份上了,可以结束了~~
 
第一个uses是将系统单元或者用户窗体完全包含,第二个则不能出现系统单元,原因楼上
已经说了,它包含的是子定义窗体的共有部分。
 
不就是作拥域不同么,[:(]早就该结束了。
 
前一个use在单元的接口部分,第二个use在单元的实现部分,差别很明显
 
uses一个单元只是对它的接口部分的声明进行引用,并不会造成单元变大。
但在interface部分引用的单元和在implementation部分引用的单元不同。
由于一个单元的implementation部分属于单元的私有部分,在其中引用单元不会
对其他单元造成影响,但interface部分是公开的,故在其中引用一个单元要考虑
交叉引用问题。
 
作用域的问题,看一本书就都明白了
 
同意cgzhang的關點
 
多人接受答案了。
 
后退
顶部