程序如下:
var
  a001:array[0..25] of byte;
  a002:array[1..100] of byte;
  ......
  a999:array[1..12] of byte;
if str = 'a001' then
  处理a001数组;
if str = 'a002' then
  处理a002数组;
......
if str = 'a999' then
  处理a999数组;内容很多。请问变量名称怎样转化为数组名?或者其他的简化方法?

解决方案 »

  1.   

    因为str变量的内容和数组名是一一对应的,我就想可不可以将他们对应起来:
    functio ProcessArray(a:array of byte):boolean;
    begin
      //
    end;function GetArray(str:string):boolean;
    begin
      ProcessArray(TArray(str));  //可不可以用什么方法转化一下:
    end;
      

  2.   

    看看这样行不?建立一个结构类型如下:type
      TMyArray = record
        name: string;
        A001: array of byte;
      end;var
      A: array[0..12] of TMyArray;procedure Init;
    var
      I: Integer;
    begin
      for I := Low(A) to High(A) do
      begin
        //...
      end;
    end;procedure ProcessArray(MyArray: array of byte);
    begin
      //
    end;function GetArray(const AArrayName: string): boolean;
    var
      I: Integer;
    begin
      Result := False;  for I := Low(A) to High(A) do
        if A[I].name = AArrayName then
        begin
          Result := True;
          ProcessArray(A[I].A001);
          Break;
        end;
    end;
      

  3.   

    procedure TForm1.DoSthing(aName: string);
    begin
        case StrToInt(rightStr(aName,3)) of
        1:
        begin    end;
        2:
        begin    end;
        3:
        begin    end;
        .....
        999:
        begin    end;
        end;
    end;
      

  4.   

    问题已经描述的很清楚了,就是字符串转化为数组名称。heluqing的方法并不简单呀:)