高手请进!!!!!(0分)

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

delphi923

Unregistered / Unconfirmed
GUEST, unregistred user!
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs,unit2;-----------1

type
var
a:integer;------3
TForm1 = class(TForm)
private
{ Private declarations }
public
a:integer;-----4
{ Public declarations }
end;

var
Form1: TForm1;
a:integer;-----5

implementation
uses unit2;-------2
a:integer;------6

{$R *.dfm}

end.
我有两个问题:
1:请问程序中两处引用UNIT2有什么区别?
2:请问程序中几处定义变量A有什么区别?
 
建议:
1.修改问题标题,使之包含必要的与内容有关的关键词——你总不希望到书店买书的时候放眼
望去都是一些与内容无关的的书名吧。
2.修改问题分类——这个问题和数据库没有任何关系,应该被放到“Object Pascal”分类。


在单元的interface部分定义的东西对别的单元来说是可见的(interface就是“接口”嘛)。
因此,在 5 处定义的a可以被别的单元访问,而6就不行,只能在本单元内部使用(3处的定义是
非法的,4处定义的是类TForm1的成员变量)。同样的,在interface中的对别的单元的引用对外
也是可见的,如果两个单元都分别在interface部分引用了对方,编译器就会提示“循环引用”
错误,要解决这个问题,就要把其中至少一个引用放在implementation部分。还有一个问题要
注意:在implementation部分的引用不会对interface部分产生影响,例如:你如果将 Windows
单元的引用放到了implementation部分,那么你就不能在interface部分使用DWord。


0分!?
 
1:请问程序中两处引用UNIT2有什么区别?

位于接口处的引用,被引用的单元变化将作为本单元的变化扩散。
位于实现处的引用,被引用的单元变化只影响本单元的变化。

换句话说:

位于接口处引用的unit2重新编译后,unit1将被自动重新编译,同时所有引用unit1的
其他单元也将重新编译,所以在接口处的引用不能循环引用。
位于实现处引用的unit2重新编译后,unit1将被自动重新编译,其他非接口处引用unit1的
单元不需要重新编译。
 
后退
顶部