动态二维数组(50分)

  • 主题发起人 主题发起人 su-100
  • 开始时间 开始时间
S

su-100

Unregistered / Unconfirmed
GUEST, unregistred user!
如何进行动态二维数组的设置
 
var
A : array of array of string;
I, J : Integer;
begin
SetLength(A, 10);
for I := Low(A) to High(A) do
begin
SetLength(A, I);
for J := Low(A) to High(A) do
A[I,J] := IntToStr(I) + ',' + IntToStr(J) + ' ';
end;
end;
 
最好这样:
a: array of string;
b: array of a;
剩下的就好办了,
 
对应非方阵数组:
var
A : array of array of string;
I, J : Integer;
begin
RowCount:=(***your request);
ColCount:=(***your request);
SetLength(A, RowCount,ColCount);
for I := Low(A) to High(A) do
begin
for J := Low(A) to High(A) do
A[I,J] := (***your request);
end;
end;
如果不能先确定长度,则要判断,如RowCount不定:
begin
//RowCount:=(***your request);
ColCount:=(***your request);
SetLength(A, 2,ColCount);//先初始化一个小的2行
for I := Low(A) to High(A) do
if I>=2 then
SetLength(A,I+1,ColCount);//动态增加一行
begin
for J := Low(A) to High(A) do
A[I,J] := (***your request);
end;
end;


 
用 Delphi 的变量数组类型

function GetArray: Variant;
const
HighVal = 12;
var
V: Variant;
i, j: Integer;
begin
V := VarArrayCreate([0, HighVal, 0, HighVal], varInteger);
for i := 0 to HighVal do
for j := 0 to HighVal do
V[j, i] := i * j;
Result := V;
end;
 
高手真多!
 
如果是动态数组,最好用Array of char,因为动态数据本身是动态分
配,而string也是动态分配,搞多了好象系统会不稳定。我的系统中本来
大量使用了一维动态数组,后来系统不太稳定,换成array of char,静态
分配的就明显稳定了。
 
多人接受答案了。
 
后退
顶部