讨论个问题,关于Uses(126分)

  • 主题发起人 主题发起人 chinaplate
  • 开始时间 开始时间
C

chinaplate

Unregistered / Unconfirmed
GUEST, unregistred user!
Uses在DELPHI中是无处不在的,它的用法简单,但好象有点不好琢磨。

1。在interface中uses与implementation中的uses有什么具体区别?
一般情况下,好象是一样的,在interface中users要造成交叉引用的问题,
在implementation中就可以了,在系统内部,到底做了些什么?


2。uses后的单元,有的对应一个.pas文件,有的就没有,如Qrctrls单元,只有.dcu文件,我
能不能得到它的.pas文件?有的有路径,有的没有路径,DELPHI是怎么找到它们的?

3。在我的程序中,有一个单元文件,其中我定义了一些全局的变量,和一些公用的函数。然后在
每一个Form中,都要用到其中的东西,也就都要引用这个单元。现在,这个单元越来越庞大,
我想知道,是不是在Form的建立、运行过程,我的单元中的变量、函数都要驻留内存,对系统
造成影响?

我有点困惑,
请大家指教,
谢谢。
 
关注,我也想知道
 
1.我也只知结果,不知原因.
2.pas文件经过编译就成了dcu文件.只有.dcu文件,不可能得到.pas文件.有的有路径,
有的没有路径,DELPHI通过tools|environment options对话框中library页面中
library path中设置的路径进行搜索.
3.单元创建后一直驻留在内存中直到注销.
 
我记得看过一个资料,DELPHI编译器,只将单元中的用到的变量、函数编译成exe,
用不找的不管它,现在我认为是这样的,否则delphi自己加上的单元也够庞大的,
就是说,我的程序这样应用单元对系统的开销影响不大,是这样吗?

聆听指教,谢谢。
 
其实uses子句可以用在程序的任何一个部分的开始,想要交叉引用两个单元也必须在不同
的uses子句中声明。
 
位置可能是做用域不同吧
面有没有扩展名那delphi应自己会认识吧
 
2。uses后的单元,有的对应一个.pas文件,有的就没有,如Qrctrls单元,只有.dcu文件,我
能不能得到它的.pas文件?有的有路径,有的没有路径,DELPHI是怎么找到它们的?

duc文件是编译过的单元,相当于C++中的OBJ文件;Qrctrls单元在QRPT50.BPL文件中存在,
BPL文件其实是特殊形式的DLL。有没有路径这个要在Environment Options里设置。
 
1. 联想一下interface部与implementation部的区别即可。
2.3.同wind_cloudy。
 
uses一个单元只是对它的接口部分的声明进行引用,并不会造成单元变大。但在interface
部分引用的单元和在implementation部分引用的单元不同。由于一个单元的implementation
部分属于单元的私有部分,在其中引用单元不会对其他单元造成影响,但interface部分是公开
的,故在其中引用一个单元要考虑交叉引用问题。
单元编译到.exe文件时,只把所须的过程/函数/变量连结到目标文件中去,以后exe文件
执行时就不再需要.dcu文件支持。
*如果exe文件有使用单元中的class,则delphi会把相关的祖先类一起连入,所以使用vcl
库的程序很大,直接用api就小得多。
 
谢谢各位
 
后退
顶部