超級菜問題﹗(60分)

  • 主题发起人 主题发起人 dadabox1
  • 开始时间 开始时间
D

dadabox1

Unregistered / Unconfirmed
GUEST, unregistred user!
interface下的uses與implementation的uses有什么區別﹖我寫的一個unit﹐將它放在interface
下或implementation下都行﹐但我知有什么不同﹖
private
{ Private declarations }
public
{ Public declarations }
end;

var //像這兒變數設定又有什么不同﹖好像跟public下一樣
UserName:String;
PassWord:String;
UserClass:Integer;
Log_Time:TDateTime;
哪位大俠有這方面的解釋嗎﹖請詳細一點。我看書上﹐好像也沒有清楚解釋呢。
如我表單在uses中調用一個unit﹐若我的表單關閉了﹐會不會也將這個unit關掉呢﹖內存會
不會釋放掉﹖我許多表單都會用到一些重復的unit﹐那么會不會增加內存開銷或執行檔大小﹖
最好能有一篇文章來看一下﹐謝謝﹗
 
interface下的uses与implementation的uses其实只有一个区别,就是放在implementation中
可以避免循环引用,比如你在unit1的interface中uses了Unit2,如果在Unit2的interface中
又引用Unit1,那么Delphi就会告诉你循环引用了,如果放在implementation中就没问题了。
 
好像跟能否循环使用有关系
 
interface下的uses表示在整个单元里使用,implementation的uses表示在实现部分里使用

我认为你写的那个unit是在实现(implementation)部分里使用,所以写在哪儿无所谓。

如果你写的unit在interface部分使用,而你却把你写的unit写在了
implementation的uses后面,那可能就要出错了,这是我的理解,没试过。

另外一点,就像教父说的一样。
 
還有沒有更仔細的﹖最好有一篇相關的資料讀讀。
 
在第一个uses和在第二个uses之间的部分需要用到第一个uses的声明
如果你做了一个单元unit1,当你从另外一个单元unit2调用unit1时,unit1的第一个声明uses对unit2
来说仍然起作用,可是implenment后的uses引用的单元你将无法访问其中的任何方法和属性
 
区别在于,这两个定义在这里一个是区域性的,而另一个则是公共性的.
 
放在uses里的是可以被外部调用的。而后者相当于一个内部过过程是不能被外部调用的。
 
那是不是說若關掉此表單﹐在implenment部分調用的都會卸掉了。那么許多表單都會用到
同一個UNIT﹐會不會因此增加程序大小﹑內存開鎖呢﹖
 
当然不会,编绎后,是打在程序内的,只是一个地址而已。相当于一个DLL,只不过是内部的,

比DLL快很多。
 
哦﹐那即是說只要調用一個特有的UNIT﹐別的表單沒有的﹐才會增加大小﹐若是一個別表單
已調用的﹐就不會增加體積了。
 
interface下的uses与implementation的uses其实只有一个区别,
就是放在implementation中可以避免循环引用,比如你在unit1
的interface中uses了Unit2,如果在Unit2的interface中又引用
Unit1,那么Delphi就会告诉你循环引用了,如果放
在implementation中就没问题了。
 
; unit 是组成PASCAL程序的单独的原代码模块,单元由函数和过程组成,这些函数和过程能被主程序调用。
一个单元至少要由3个部分组成:
1 UNIT (解释略)
2 INTERFACE (解释略)
3 IMPLEMENTATION 包含了过程和函数的原代码,但它同时也允许在此声明不被其他单元所调用
的任何数据类型、常量和变量。是在定义在INTERFACE中声明的过程和函数的地方,语句只有一个
单词并且在一行上:
implementation
一个单元能可选地包含其他两个部分:
1 initialization
2 finalization

注意:
如果在UnitA中调用UnitB并在UnitB中调用UnitA,则称为循环单元引用。(说明程序设计有缺陷)
比较好的解决方法是将两者共有的代码移到第三的单元中。如必须用到循环单元引用时就必须把一个
USES子句移到implementation部分,把另一个留在INTERFACE部分。
 
对不住大家,分太少了。
 
多人接受答案了。
 
后退
顶部