为何不能设全局数组?(100分)

D

denling

Unregistered / Unconfirmed
GUEST, unregistred user!
我在implement 中设数组变量,但在各过程中对这些变量进新行操作后,
但一出过程 ,数组变量中的值就没有了。
难道只能用function?
 
implementation后定义的全局变量属unit私有,只限本unit内部使用。要
想让其它unit使用,必须在implementation之前定义,并且要uses该单元!
不仅数组,其它类型变量也一样。
 
给你一个例子:这个例子里,Unit1和Unit2的全局变量可以互相访问!
Unit1.pas
...
var
Form1 : TForm1;
m1 : integer;
// 在其它unit可见
implementation
uses unit2;
//
var
s1 : array[0..1] of integer;
// 在其它unit不可见
k1 : integer;
...
procedure TForm1.Button1Click(Sender: TObject);
begin
m1 := 66;
Form2.ShowModal;
s1[0] := s2[0];
s1[1] := s2[1];
k1 := k2;
end;

========================================================
Unit2.pas
...
var
Form2 : TForm2;
s2 : array[0..1] of integer;
// 在其它unit可见
k2 : integer;
implementation
uses unit1;
...
procedure TForm2.Button1Click(Sender: TObject);
begin
s2[0] := 22;
s2[1] := 33;
k2 := m2;
end;
 
我好象跑题了!? :(
 
你在定义过程时,形参的说明有没有加var关键词,如想把变量带出,必须var
 
是参数问题还是全局变量问题?
好像是参数问题嘛.
看下面这个例子,没有必要用函数 。
...
implementation
var
theArray:Array[0..20] of Integer;
{$R *.DFM}
procedure FixTheArray(var theArray:Array of Integer);
var
i:Integer;
begin
for i:=Low(theArray) to High(theArray)do
theArray:=i;
end;
...
 
接受答案了.
 
顶部