变量名的问题

cdchq 2012-04-27 05:32:44
标题我也不知道该怎么写。
问题是这样的:
有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;

不知道我表达明白没有
...全文
139 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
cdchq 2012-04-28
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 的回复:]

用case挺好的,可读性强,维护起来也方便。
[/Quote]
关键是太长了,这样写,一个函数得1千多行
s11ss 2012-04-27
  • 打赏
  • 举报
回复
用case挺好的,可读性强,维护起来也方便。
kaikai_kk 2012-04-27
  • 打赏
  • 举报
回复
用数组的数组
  • 打赏
  • 举报
回复
这个很简单的:

type
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]就是对应的数组。
cdchq 2012-04-27
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

arr1 ... arrn 一维数组时怎么初始化的?
[/Quote]

是一些常量数组
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));
cdchq 2012-04-27
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

const
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……
[/Quote]

你这个,直接把数组当参数传进来,我也知道。
我的问题是,现在不知道应该选择哪个数组,所以有函数f1(i:Integer),这样,参数是一个数字
然后根据这个数字来选择数组

Case i of
1:MyFunc2(arr1);
2:MyFunc2(arr2);
..............
n:MyFunc2(arrn);
end;
kaikai_kk 2012-04-27
  • 打赏
  • 举报
回复
arr1 ... arrn 一维数组时怎么初始化的?
s11ss 2012-04-27
  • 打赏
  • 举报
回复
const
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;
haitao 2012-04-27
  • 打赏
  • 举报
回复
直接以指针为参数,myfunX自己进行类型转换

16,748

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧