如何Form中访问在Application中声明的变量?(50分)

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

chenxu_sichuan

Unregistered / Unconfirmed
GUEST, unregistred user!
如果我在program中声明了一个全局变量,如何在其他Unit中调用?代码如下:
//program的源代码:
program Project1;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1};

{$R *.RES}
//这是我声明的变量
var
a:AnsiString;
begin
Application.Initialize;
a := 'test';
Application.CreateForm(TForm1, Form1);
Application.Run;
end.

//调用此全局变量的Unit源代码
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
begin
//调用在program中声明的全局变量a ,但是编译通不过,在BCB中是可以的!
ShowMessage(a);
end;

end.
 
你可以是Form1中声明一变量就是。
program Project1;

uses
Forms,
Unit1 in 'Unit1.pas' {Form1};

{$R *.RES}
//这是我声明的变量
var
a:AnsiString;
begin
Application.Initialize;
a := 'test';
Application.CreateForm(TForm1, Form1);
Form1.bb:=a
//增加的
Application.Run;
end.

//调用此全局变量的Unit源代码
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
bb:string
end;

var
Form1: TForm1;

implementation

{$R *.DFM}


procedure TForm1.Button1Click(Sender: TObject);
begin
//调用在program中声明的全局变量a ,但是编译通不过,在BCB中是可以的!
//ShowMessage(a)
去掉
ShowMessage(bb)
//增加
end;

end.

不就可以了吗?
 
program代码跟Unit是不一样的,没有interface段,当然没有办法读取变量了,实际上
写在program代码中的变量声明应该都是局部的。
 
直接声明常数,这不是变量;
全局变量在基类的窗口设置更好,继承的子类窗体就全有了,
在program的代码中的变量意义不大,常数还可以。
 
多人接受答案了。
 
后退
顶部