哪位兄弟姐妹详细讲讲动态二维数组?(50分)

  • 主题发起人 主题发起人 freewolf
  • 开始时间 开始时间
F

freewolf

Unregistered / Unconfirmed
GUEST, unregistred user!
一维数组好比
[1]
[2]
[3]
[4]
这样排列
二维数组好比
[1][1][2][3][4]
[2][1][2][3][4]
[3][1][2][3][4]
[4][1][2][3][4]
这样你明白了吧?
 
问题: 定义过程中二维数组的声明 ( 积分: 30 )
分类: 控件 - 使用

来自: txl2001, 时间: 2005-07-20 10:41:00, ID: 3139850
2:如何在过程定义二维数组???
procedure Pro_Arr_clear(arr_tmp: array of array of integer)

这种声明方法对不对?为什么不能编译呢?

来自: cyrj2009, 时间: 2005-07-20 10:48:52, ID: 3139861
var
//定义一个动态二维数组变量
mydateArray: array of array of string

begin
//设置动态二维数组的大小,长度同样要在0~255之间
SetLength(mydateArray,4,4)


来自: cyrj2009, 时间: 2005-07-20 11:01:23, ID: 3139889
var
//定义一个动态一维数组变量
A;array of Integer

begin
//设置动态一维数组的大小,长度同样要在0~255之间
SetLength(A,10)


来自: txl2001, 时间: 2005-07-20 11:27:47, ID: 3139940
[red] 可以多次动态指定一个动态数组的大小么??? [/red]

来自: cyrj2009, 时间: 2005-07-20 12:02:28, ID: 3139992
可以多次动态指定一个动态数组的大小啊
SetLength(mydateArray,i,4)

但是必须退出调用定义动态数组的过程再次动态定义数组的大小

来自: txl2001, 时间: 2005-07-20 12:41:12, ID: 3140041
我可以一边给数组赋值一边调整数组的大小么??

来自: tswhq, 时间: 2005-07-20 12:51:23, ID: 3140050
如果认为以上的方法还不行的话,可考虑用指针

申请内存
...
操作
...
释放内存

来自: helloqiner, 时间: 2005-07-20 12:55:44, ID: 3140058
用 TObjectList 吧,跟 Hashtable 一样,非常方便

来自: Puha, 时间: 2005-07-20 13:43:52, ID: 3140129
type
BaseAry = array of String

type
StrAry=array of BaseAry

var
i:integer
begin
SetLength(StrAry,10)

for i:=Low(strAry) to High(strAry) do
begin
SetLength(strAry,10)

end

end


来自: txl2001, 时间: 2005-07-25 14:49:55, ID: 3145799
help me~~

来自: loco, 时间: 2005-07-25 15:01:27, ID: 3145821
建议用variant类型,不要用动态数组

定义:
arr_tmp: variant

创建 2维数据
arr_tmp := VarArrayCreate([0,x,0,x], varInteger)

调用
arr_tmp[x,x]

来自: txl2001, 时间: 2005-07-25 15:39:09, ID: 3145915
我问的是如何在过程中定义二维数组:
procedure Pro_Arr_clear(arr_tmp: array of array of integer)

这种声明方法对不对?为什么不能编译呢?

来自: Puha, 时间: 2005-07-29 18:24:53, ID: 3150650
首先,你要理解,数组也是一种数据类型,只是是一种自定义。
首先,定义一个二维数据类型
//一维的
Tryp
AryOfInt = array of integer

//二维的
Type
DoublAryInt=array of AryOfInt


那么,你的过程就可以写成
procedure Pro_Arr_clear(arr_tmp:DoublAryInt)


来自: txl2001, 时间: 2005-08-09 13:13:43, ID: 3161051
多人接受答案了。

得分大富翁: cyrj2009-15,helloqiner-1,loco-3,Puha-10,tswhq-1,
 
问题: 请教动态数组问题 ( 积分: 100 )
分类: Object Pascal

来自: jhonguy, 时间: 2003-01-04 18:08:00, ID: 1560336
1)下面的要求该怎么实现?
1。动态创建一个二维数组,比如说时integer类型的,开始时4×6的。
2。在同意一内存中,把其变成时6×4来访问
2)这么定义一个数组指针
TByteArrayArray = array of array of Byte

TPByteArrayArray = ^TByteArrayArray

为什么不能用 ?
定义了
pbytearrarr:TPByteArrayArray

也分配好了内存空间
SetLength(pbytearrarr^,10);
就是出错!
有谁知道该怎么解决?3tx



来自: zm30, 时间: 2003-01-04 22:40:00, ID: 1560689
delphi帮助上这样做
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


来自: menxin, 时间: 2003-01-04 23:54:00, ID: 1560764
这样给指针赋值是错误的

来自: manmanchong, 时间: 2003-01-06 8:31:00, ID: 1562374
pbytearrarr:=new(TByteArrayArray)

SetLength(pbytearrarr^,10); 在这之前应该先分配指针


来自: sytzlh, 时间: 2003-01-06 8:36:00, ID: 1562387
SetLength(pbytearrarr^,10,10);

来自: windbell, 时间: 2003-01-06 14:07:00, ID: 1563603
1)下面的要求该怎么实现?
1。exm:array of array of integer

setlength(exm,4,6)

2。赋值后,可以再次调用setlength(exm,6,4);由于在调用setlength时
  原来的数据会被保留,所以这样就可以按你的要求访问了,
2)这么定义一个数组指针
SetLength(pbytearrarr^,10,10);
你定义的数组是二维的,所以应当传递两个长度参数,或者传递一个后再对其中第一维的每一个
元素进行定义长度,这样的好处是可以对第二维定义不定长度的数据。如zm30所示的那样



来自: wr960204, 时间: 2003-01-09 15:52:00, ID: 1569081
给你写个一个例子,关键是过程TowArrayAS你好好看看。
type

TByteArrayArray = array of array of Byte

PByteArrayArray = ^TByteArrayArray

var
p : PByteArrayArray

q : TByteArrayArray

pp : PLongWord

l : LongWord


procedure TowArrayAS(var iarr: TByteArrayArray
x, y: LongWord)

var
i : integer

p : PLongWord

begin
if Length(iarr) * Length(iarr[0]) <> x * y then
begin
showmessage('总数不符合')

Exit

end

//二维数组就是数组之数组
//修改第一维
p := @iarr[0]

Dec(p)

p^ := x

for i := 0 to High(iarr) do
begin
//修改第二维
p := @iarr[0]

Dec(p)

p^ := y

end

end

begin
setlength(q, 10, 2)

TowArrayAS(q, 2, 10)

q[1,9]:=1

end

动态数组的结构如下
Type
动态数组类型=record
计数器:LongWord

数组长度:LongWord

数据:array[0..数组长度] of 数据类型

end

我就是修改的数组长度

来自: wr960204, 时间: 2003-01-09 16:08:00, ID: 1569128
不过我刚才发的一定是有毛病的。
因为呵呵,动态二维数组的每一维的数组不是放在一起的。
呵呵,可惜了一个好的想法。

来自: zxbyh, 时间: 2003-01-09 16:13:00, ID: 1569176
var

A: Variant

begin
A := VarArrayCreate([0, 4], varVariant)

A[0] := 1

A[1] := 1234.5678

A[2] := 'Hello world'

A[3] := True

A[4] := VarArrayOf([1, 10, 100, 1000])

WriteLn(A[2])
{ Hello world }
WriteLn(A[4][2])
{ 100 }

end



来自: jhonguy, 时间: 2003-01-15 21:39:00, ID: 1582577
to :manmanchong, 需要用new吗?delphi帮助上可没有这么做。
to other people:其实我的数组大小是可以确定的只是想要改变访问方式。

得分大富翁: manmanchong-10,sytzlh-10,windbell-40,wr960204-20,zm30-10,zxbyh-10,
 
后退
顶部