delphi2007 教程

delphi2007 教程

首页 新随笔 联系 聚合 管理
  1013 Posts :: 0 Stories :: 28 Comments :: 0 Trackbacks
动态循环,个数可变的for语句 VCL组件开发及应用
http://www.delphi2007.net/DelphiVCL/html/delphi_20061223173939163.html
比如说:  
   
      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;

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

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;

0,0,0  
  0,0,1  
  0,0,2  
  0,0,3  
  0,0,4  
  0,0,5  
  0,0,6  
  0,1,0  
  0,1,1  
  0,1,2  
  0,1,3  
  0,1,4  
  0,1,5  
  0,1,6  
  0,2,0  
  0,2,1  
  0,2,2  
  0,2,3  
  0,2,4  
  0,2,5  
  0,2,6  
  0,3,0  
  0,3,1  
  0,3,2  
  0,3,3  
  0,3,4  
  0,3,5  
  0,3,6  
  0,4,0  
  0,4,1  
  0,4,2  
  0,4,3  
  0,4,4  
  0,4,5  
  0,4,6  
  0,5,0  
  0,5,1  
  0,5,2  
  0,5,3  
  0,5,4  
  0,5,5  
  0,5,6  
  1,0,0  
  1,0,1  
  1,0,2  
  1,0,3  
  1,0,4  
  1,0,5  
  1,0,6  
  1,1,0  
  1,1,1  
  1,1,2  
  1,1,3  
  1,1,4  
  1,1,5  
  1,1,6  
  1,2,0  
  1,2,1  
  1,2,2  
  1,2,3  
  1,2,4  
  1,2,5  
  1,2,6  
  1,3,0  
  1,3,1  
  1,3,2  
  1,3,3  
  1,3,4  
  1,3,5  
  1,3,6  
  1,4,0  
  1,4,1  
  1,4,2  
  1,4,3  
  1,4,4  
  1,4,5  
  1,4,6  
  1,5,0  
  1,5,1  
  1,5,2  
  1,5,3  
  1,5,4  
  1,5,5  
  1,5,6  
  2,0,0  
  2,0,1  
  2,0,2  
  2,0,3  
  2,0,4  
  2,0,5  
  2,0,6  
  2,1,0  
  2,1,1  
  2,1,2  
  2,1,3  
  2,1,4  
  2,1,5  
  2,1,6  
  2,2,0  
  2,2,1  
  2,2,2  
  2,2,3  
  2,2,4  
  2,2,5  
  2,2,6  
  2,3,0  
  2,3,1  
  2,3,2  
  2,3,3  
  2,3,4  
  2,3,5  
  2,3,6  
  2,4,0  
  2,4,1  
  2,4,2  
  2,4,3  
  2,4,4  
  2,4,5  
  2,4,6  
  2,5,0  
  2,5,1  
  2,5,2  
  2,5,3  
  2,5,4  
  2,5,5  
  2,5,6  
  3,0,0  
  3,0,1  
  3,0,2  
  3,0,3  
  3,0,4  
  3,0,5  
  3,0,6  
  3,1,0  
  3,1,1  
  3,1,2  
  3,1,3  
  3,1,4  
  3,1,5  
  3,1,6  
  3,2,0  
  3,2,1  
  3,2,2  
  3,2,3  
  3,2,4  
  3,2,5  
  3,2,6  
  3,3,0  
  3,3,1  
  3,3,2  
  3,3,3  
  3,3,4  
  3,3,5  
  3,3,6  
  3,4,0  
  3,4,1  
  3,4,2  
  3,4,3  
  3,4,4  
  3,4,5  
  3,4,6  
  3,5,0  
  3,5,1  
  3,5,2  
  3,5,3  
  3,5,4  
  3,5,5  
  3,5,6  
  4,0,0  
  4,0,1  
  4,0,2  
  4,0,3  
  4,0,4  
  4,0,5  
  4,0,6  
  4,1,0  
  4,1,1  
  4,1,2  
  4,1,3  
  4,1,4  
  4,1,5  
  4,1,6  
  4,2,0  
  4,2,1  
  4,2,2  
  4,2,3  
  4,2,4  
  4,2,5  
  4,2,6  
  4,3,0  
  4,3,1  
  4,3,2  
  4,3,3  
  4,3,4  
  4,3,5  
  4,3,6  
  4,4,0  
  4,4,1  
  4,4,2  
  4,4,3  
  4,4,4  
  4,4,5  
  4,4,6  
  4,5,0  
  4,5,1  
  4,5,2  
  4,5,3  
  4,5,4  
  4,5,5  
  4,5,6  
 

递归

同上

posted on 2008-11-18 14:29 delphi2007 阅读(107) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。