如何定义全局变量?(10分)

  • 主题发起人 主题发起人 南宫吹云
  • 开始时间 开始时间

南宫吹云

Unregistered / Unconfirmed
GUEST, unregistred user!
如果在应用程序中定义全局变量?
是在program xxx;
var中定义吗?应该在哪个地方定义?
 
在这里,private里的变量只在此单元中可用,public则可以在其他窗口调用
private
{ Private declarations }
public
{ Public declarations }
 
public里面的就是全局变量
 
老兄,是全局变量,整个程序中都能使用的。
我是在主窗口的
implementation
之前定义,整个程序中都能使用了,但是其他窗口要想使用它,必须uses主窗口。
我是想能不能定义不用包含主窗口而能在所有窗口中直接使用它的变量,直接在
program文件中定义时,在其他窗口不能引用。可是按照PASCAL语法,全局变量就
是应该在此定义的呀?
是什么原因呢?大家讨论一下。
 
不可以啊
原因吗, 编译时是一个unit先生成一个dcu中间代码的呀,生成时只访问这个unit和这个unit use的unit.
所以,如果没有use, 当然找不到其他不用的unit中的全局变量啦。对主程序也一样啊。
不过use时好像必须是pas文件哦,.dpr连use都不可能,怎么可能在编译时访问其中的变量定义呢?
注意哦,只是编译时无法访问,理论上实际运行时你都可以访问(读,写)这块内存而不会出错啦。
 
可以的,新建一个单元,
UNIT GLOBAL;
INTERFACE
CONST ...
TYPE ...
VAR ...
PROCEDURE...
FUNCTION...
IMPLEMENTATION
END.
在所有的单元中引用此单元。
这就不必引用主窗口了,这应是最好的办法,因为你不想连带主窗口的其它不用的
对象和变量在你现在的窗中或单元中可见,这就将不须公开的对象和变量保护起来。
 
要想在其他窗体中能共享变量,只能引用定义了这个变量的窗体
 
当我们新建一个工程:
program Project1;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1};//这里,不就对unit1进行引用了吗?怎么能说dpr连use都不可能呢?

{$R *.RES}

begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.

 
接受答案
 
在两个form中变量可以传递,但不知为什么值不能传递,(即只能传递初载值)
 
后退
顶部