标题我也不知道该怎么写。
问题是这样的:
有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;不知道我表达明白没有

解决方案 »

  1.   

    直接以指针为参数,myfunX自己进行类型转换
      

  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);
      f1(a2)
    end;
      

  3.   

    arr1 ... arrn 一维数组时怎么初始化的?
      

  4.   


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

  5.   


    是一些常量数组
    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));
      

  6.   

    这个很简单的: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]就是对应的数组。
      

  7.   

    用case挺好的,可读性强,维护起来也方便。