XP,Delphi2007です。
Delphiは初心者です。
変数の宣言で困っています。
Unit1で宣言したPublic変数を、Unit2でも使いたいのです。
Unit1で、typeのあとの
public
{ Public declarations }
のあとに、
a:string;
を宣言し、Unit2でaを参照しようとしましたが、出来ませんでした。
VBでのPublic変数のような使い方をするには、どうすればよいのでしょうか?
よろしくお願いします。
type
TForm1 = class(TForm)
private
{ Private 宣言 }
public
{ Public 宣言 }
end;
var
Form1: TForm1;
a: String; //ここ
ありがとうございます。
var
Form1: TForm1;
の下で
a: String;
と宣言したら、Unit2から参照できました。
○もう一つ質問したいのですが、
public
{ Public 宣言 }
の真下で
a: String;
と宣言した場合、aはどの範囲(Unit1だけなのか、Unit2でも参照可能か)で、どういう方法(普通にa:=a+1;で可能か)で参照するのでしょうか。
私もVBしか使えないのはとてもよくないことだと思い、最近Delphiをはじめました。
よろしくお願いします。
すみません。
上の例は、
a: String;
なので、
「a:=a+1;で可能か」
というのではなく、
「a:='abc';で可能か」
でよろしくお願いします。
VBでもクラスのPublic変数を他からアクセスするには
そのクラス参照を指定する必要があるんじゃないの?
別のユニットのクラスのメンバーであれば、そのクラス参照をしなきゃね。
変数aがUnit1のForm1クラスのメンバー変数なら、Form1.a
すみません。
おっしゃるとおりです。
Form1.a
とするべきでした。
○もう一つ質問が出来たんですが、
public
{ Public 宣言 }
の真下で
a: String;
と宣言するのは、どんな場合なのでしょうか。
var
Form1: TForm1;
の下で
a: String;
と宣言しても、Unit2から参照できるので、
{ Public 宣言 }
の真下で宣言する場合がどんな場合なのか、分かりません。
何度もすみません。
よろしくお願いします。
クラスのメンバーとして変数を宣言すれば、その変数の
宣言場所、所属がはっきりする。
そうでないグローバル変数は、どこで宣言してるのか分かりにくいし、
同じ変数を複数のユニットで宣言してしまうミスも起こり得るので、
バグの元になりやすい。
どうしてもグローバル変数を使いたければ、グローバル変数専用の
ユニット Global.pasを作って、そこにグローバル変数を集めておけば、
宣言場所がはっきりするし、重複定義のミスも防げる。
ありがとうございます。
グローバル変数専用のユニットを作ります。
とても助かりました。
ツイート | ![]() |