标题我也不知道该怎么写。
问题是这样的:
有N个常量数组arr1至arrn,每个数组都是一维数组,但元素个数差别很大,有的只有一个元素,有的有几千个元素。所以如果用2维数组来表示这N个数组的话,太浪费了
而如果用动态2维数组的话,数组的初始化又太麻烦了
要写一个函数,我现在只能用Case语句一个一个的写
procedure MyFunc1(i:Integer);
begin
Case i of
1:MyFunc2(arr1);
2:MyFunc2(arr2);
..............
n:MyFunc2(arrn);
end;
end;
我的意思是有没有可能,象数组那样写成类似如这样,但又不用把这N个数组改成一个2维数组或动态数组
procedure MyFunc1(i:Integer);
begin
MyFunc2(arr[i]);
end;不知道我表达明白没有
问题是这样的:
有N个常量数组arr1至arrn,每个数组都是一维数组,但元素个数差别很大,有的只有一个元素,有的有几千个元素。所以如果用2维数组来表示这N个数组的话,太浪费了
而如果用动态2维数组的话,数组的初始化又太麻烦了
要写一个函数,我现在只能用Case语句一个一个的写
procedure MyFunc1(i:Integer);
begin
Case i of
1:MyFunc2(arr1);
2:MyFunc2(arr2);
..............
n:MyFunc2(arrn);
end;
end;
我的意思是有没有可能,象数组那样写成类似如这样,但又不用把这N个数组改成一个2维数组或动态数组
procedure MyFunc1(i:Integer);
begin
MyFunc2(arr[i]);
end;不知道我表达明白没有
a1: array[0..1] of Integer = (0,1);
a2: array[0..2] of Integer = (0,11,2); procedure f1(arr: array of Integer);
begin
ShowMessage(IntToStr(arr[1]));
end;begin
f1(a1);
f1(a2)
end;
你这个,直接把数组当参数传进来,我也知道。
我的问题是,现在不知道应该选择哪个数组,所以有函数f1(i:Integer),这样,参数是一个数字
然后根据这个数字来选择数组Case i of
1:MyFunc2(arr1);
2:MyFunc2(arr2);
..............
n:MyFunc2(arrn);
end;
是一些常量数组
const Arr1:array[0..1] of Integer=((0),(100000));
Arr2:array[0..99] of Integer=((0),(0),.......................................(100000));
Arr3:array[0..3] of Integer=((0),(500),(100000));
PArray = ^TArray;
TArray = array[0..0] of integer;const
Arr1:array[0..1] of Integer=((0),(100000));
Arr2:array[0..99] of Integer=((0),(0),.......................................(100000));
Arr3:array[0..3] of Integer=((0),(500),(100000)); ArrPtr: array[0..2] of PArray = (@Arr1, @Arr2, @Arr3);然后在MyFunc1(i:Integer);里面使用ArrPtr[i]就是对应的数组。