比如说:  iArr: array of Integer; //长度可变
  //---------------------------------------------
  //假如长度为3:
  iArr[0] := 4;
  iArr[1] := 5;
  iArr[2] := 6;
  for i := 0 to 4 do begin
    for j := 0 to 5 do begin
      for k := 0 to 6 do begin
        ......
      end;
    end;
  end;
  //---------------------------------------------
  //假如长度为4:
  iArr[0] := 4;
  iArr[1] := 5;
  iArr[2] := 6;
  iArr[3] := 7;
  for i := 0 to 4 do begin
    for j := 0 to 5 do begin
      for k := 0 to 6 do begin
        for l := 0 to 7 do begin
          ......
        end;
      end;
    end;
  end;
  //---------------------------------------------
  //假如长度为5:
  iArr[0] := 4;
  iArr[1] := 5;
  iArr[2] := 6;
  iArr[3] := 7;
  iArr[4] := 8
    for i := 0 to 4 do begin
    for j := 0 to 5 do begin
      for k := 0 to 6 do begin
        for l := 0 to 7 do begin
          for n := 0 to 8 do begin
            ......
          end;
        end;
      end;
    end;
  end;

解决方案 »

  1.   

    iArr的长度未知
    有没有相关预编译之类的命令?比如:
    {$.. }
    for i:0=Length(iArr)-1 do
    {$.. for itmpArr[i]:=0 to iArr[i]-1 do begin}
    {$..}
    ... ...//处理段
    {$..}
    {$.. end}
    ------------------------------------------------------
    就是实现动态地写for语句的个数
    程序自己for循环体
      

  2.   

    procedure ForProc(Arr, Loop: array of Integer; Index, Param: Integer);
    var
      I: Integer;
      S: string;
    begin
      if Index >= Length(Arr) then
      begin
        S := '';
        for I := 0 to Length(Arr) - 1 do
          S := S + ',' + IntToStr(Loop[I]);
        Delete(S, 1, 1);
        { TODO : Loop为当前下标 }
        TForm1(Param).Memo1.Lines.Add(S);
      end else
        for I := 0 to Arr[Index] do
        begin
          Loop[Index] := I;
          ForProc(Arr, Loop, Index + 1, Param);
        end;
    end;procedure TForm1.Button2Click(Sender: TObject);
    var
      iArr: array of Integer; //长度可变
      iLoop: array of Integer; //长度可变
    begin
      SetLength(iArr, 3);
      SetLength(iLoop, 3);
      iArr[0] := 4;
      iArr[1] := 5;
      iArr[2] := 6;
      ForProc(iArr, iLoop, 0, Integer(Self));
    end;