我在之前聲明瞭許多公共變量,但在Delphi-XE3中處於第一位。使用其他形式聲明的公共變量的編譯器錯誤
我聲明公共變量良好,但不能用於其他形式,但我不知道爲什麼?
我主要的團結代碼:
unit uMian;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.ComCtrls;
type
TForm1 = class(TForm)
btnLoad: TButton;
btnShow: TButton;
btnEaxit: TButton;
lvStudent: TListView;
btnAdd: TButton;
procedure btnEaxitClick(Sender: TObject);
procedure btnLoadClick(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure btnAddClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
var
IsOpen : Boolean ;
public
{ Public declarations }
var
myvar : Integer ;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
uses uAdd;
function AppDir() : string ;
begin
Result := ExtractFilePath(Application.ExeName);
end;
procedure TForm1.btnAddClick(Sender: TObject);
begin
if IsOpen then
frmAdd.ShowModal ;
end;
procedure TForm1.btnEaxitClick(Sender: TObject);
begin
close;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if IsOpen then
//CloseFile(DataFile);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
IsOpen := False ;
end;
....
end.
這是沒有問題的工作好。
但是,當我在其他形式使用FrmAdd我有問題:
unit uAdd;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons,
Vcl.Samples.Spin, Vcl.ExtCtrls;
type
TfrmAdd = class(TForm)
lbledtName: TLabeledEdit;
lbledtAvg: TLabeledEdit;
seAge: TSpinEdit;
lbleId: TLabeledEdit;
btnCansek: TBitBtn;
btnAdd: TBitBtn;
procedure btnAddClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
frmAdd: TfrmAdd;
implementation
{$R *.dfm}
uses uMian;
procedure TfrmAdd.btnAddClick(Sender: TObject);
begin
// problem in below
ShowMessage(IntToStr(TForm1.myvar)) ;
end;
end.
編譯錯誤: [dcc32錯誤] uAdd.pas(問題行):E2096方法預期
的音符標識符: Cnpack在變量列表中顯示myvar
,但Rad Studio自動完成不是。
根據您打算使用instaced變量或類變量,您將不得不更改您的聲明:Class var myvar:integer;或者你的電話Instance.myvar – bummi 2013-02-15 11:39:16