请教数组问题(88分)

1

1382

Unregistered / Unconfirmed
GUEST, unregistred user!
请问:
var
a1:array of array of string;
i,j:integer;
begin
setlength(a1,10);
for i:=low(a1) to high(a1) do begin
setlength(a1,i);
for j:= low(a1) to high(a1[1]) do begin
A1[I,J] := IntToStr(I) + ',' + IntToStr(J) + ' ';
end;
end;
和 var
i,j:integer;
a1:array [0..i,0..j] of string
有什么区别?
我概念上有些不清楚。我主要想声明一个动态多位数组,应该如何?要注意那些问题。
 
T

tseug

Unregistered / Unconfirmed
GUEST, unregistred user!
1 动态数组在编译时不知道维数,运行时动态分配。
2 使用动态数组前要用SetLength为数组分配内存,一旦分配后可以和普通数组一样访问。
3 动态数组下标通常从0开始。


如果 i,j不是常量, a1:array[0..i,0..j] of string
是非法的。
 
T

terry_lzs

Unregistered / Unconfirmed
GUEST, unregistred user!
你的第二种申明方法可以通过编译?
 
P

plaw

Unregistered / Unconfirmed
GUEST, unregistred user!
老兄,你写在下面的声明根本不对。编译的错误是Constant expression expected
用动态数组会影响速度,因为会在运行期间分配内存。但是会节约一定的内存空间。
 
1

1382

Unregistered / Unconfirmed
GUEST, unregistred user!
这个问题我没说清楚
但还要谢谢各位。
其实我得问题在于我不太明白
数组的赋值,声明在任何一本delphi书上都有。
我想把数据库的数据(记录)放到一个动态的二维数组里
请问如何赋值?
 
Z

zhangkan

Unregistered / Unconfirmed
GUEST, unregistred user!
你要是数组弄得复杂,自己的头都会弄晕。我建议你自己建立类型,然后再用一个数组来
管理这个类型,就要清晰得多了。我以前也是喜欢用数组,现在复杂点的我都用类型了。
 
M

meng9999

Unregistered / Unconfirmed
GUEST, unregistred user!
数据库的数据(记录)放到一个动态的二维数组里
我也正想这样!有没有答暗?
 
1

1382

Unregistered / Unconfirmed
GUEST, unregistred user!
哎,没人回答?
我就是想做成如资源管理气一样,它对文件属性等等的排法。
那是如何实现的
 
M

mikedeakins

Unregistered / Unconfirmed
GUEST, unregistred user!
自定义一个类型。里面存有文件的所有属性。
 
1

1382

Unregistered / Unconfirmed
GUEST, unregistred user!
ok,你说的这个我想到了,自己定义类型,一个文件一条纪录。
但是我的麻烦在于如何显示,比如在listview里,像dbgrid那样显示数据。
请问这方面有没有什么例子?
 
C

creation-zy

Unregistered / Unconfirmed
GUEST, unregistred user!
>你自己建立类型,然后再用一个数组来管理这个类型
对于多维数组,我们可以通过新建一个数组类型达到目的。

procedure TForm1.Button4Click(Sender: TObject);
type
IA=array of Integer;
IAA=array of IA;
var
MyA:array of IAA;
i,j,k:Integer;
begin
SetLength(MyA,2);
for i:=0 to 1 do
begin
SetLength(MyA,3);
for j:=0 to 2 do
begin
SetLength(MyA[j],4);
for k:=0 to 3 do
MyA[i,j,k]:=k+j*4+i*3;
end;
end;
end;

如何?并不复杂吧。
 
L

lj.ah

Unregistered / Unconfirmed
GUEST, unregistred user!
SetLength(MyA,3);
SetLength(MyA[j],4);是什么意思啊?
 
顶部