我写的按钮的代码,为什么mm的值永远是0啊,实在是搞不懂,delphi7我重新装了一次,mm的值还是0.不起作用啊,请各位高手指导!!
procedure TForm1.Button9Click(Sender: TObject);  var Excel, Books: OleVariant;
  var line :integer;   //中奖号的期数  var a1,a2,a3,a4,a5,a6:integer;   //双色球的六个红球  var give:integer; // 给定红球的上限 即33  var sum:double; //总和
  var i,j,n,mm:integer;//中奖号由小到大排序用
  type
  x= array[0..2000,1..7] of integer; //定二维数组 放往期中奖号码
  ppp = array [1..7] of Integer;
  var p: ppp;
  var xxx:x;
  begin
   give:=33; // 给定红球的上限 即33   sum:=0;   line:=0;
   listbox2.Items.Text:='';  begin
   if VarIsEmpty(Excel) then
      Excel := CreateOleObject('Excel.Application');
   if VarIsEmpty(Books) then
      Books := CreateOleObject('Excel.Sheet');
   try
     Books := Excel.WorkBooks.Open('c:\往期中奖号11.xls');
     for i := 1 to 2000 do   // 有问题啊
         for j := 1 to 6 do
         begin
           if (Integer(Excel.Cells[i, j])<>0)  then
             begin
            xxx[i , j] := Integer(Excel.Cells[i, j]);
            line:=line+1;
             end
            else break;
           end;
    finally
       Excel.Quit;
    end;  end;
      line:=Trunc(line/6);//取整()
   for a1:=1 to give do
      for a2:=(a1+1) to give do
          for a3:=(a2+1) to give do  //(a2+1)
            begin
            for a4:=(a3+1) to give do  //(a3+1)
              begin
     
                for a5:=(a4+1) to give do
                    begin
      
                       for a6:=(a5+1) to give do
                         begin                    for mm:=1 to line do                      begin                       if((a1=xxx[mm][1])and(a2=xxx[mm][2])and(a3=xxx[mm][3])and(a4=xxx[mm][4]))then
                        begin
                        sum:=sum+1;
                        ListBox1.Items.Add(inttostr(a1)+','+inttostr(a2)+','+inttostr(a3)+','+inttostr(a4)+','+inttostr(a5)+','+inttostr(a6));break;
                         end;   //  有四个相同1
                       if((a1=xxx[mm][1])and(a2=xxx[mm][2])and(a3=xxx[mm][3])and(a5=xxx[mm][4]))then
                       begin
                       sum:=sum+1;
                       ListBox1.Items.Add(inttostr(a1)+','+inttostr(a2)+','+inttostr(a3)+','+inttostr(a4)+','+inttostr(a5)+','+inttostr(a6));break;
                        end;
                       if((a1=xxx[mm][1])and(a2=xxx[mm][2])and(a3=xxx[mm][3])and(a6=xxx[mm][4]))then
                       begin
                       sum:=sum+1;
                       ListBox1.Items.Add(inttostr(a1)+','+inttostr(a2)+','+inttostr(a3)+','+inttostr(a4)+','+inttostr(a5)+','+inttostr(a6));break;
                       end;
                       if((a1=xxx[mm][1])and(a2=xxx[mm][2])and(a4=xxx[mm][3])and(a5=xxx[mm][4]))then
                        begin
                          sum:=sum+1;
                          ListBox1.Items.Add(inttostr(a1)+','+inttostr(a2)+','+inttostr(a3)+','+inttostr(a4)+','+inttostr(a5)+','+inttostr(a6));break;
                           end;
                       if((a1=xxx[mm][1])and(a2=xxx[mm][2])and(a4=xxx[mm][3])and(a6=xxx[mm][4]))then
                       begin
                       sum:=sum+1;
                       ListBox1.Items.Add(inttostr(a1)+','+inttostr(a2)+','+inttostr(a3)+','+inttostr(a4)+','+inttostr(a5)+','+inttostr(a6));break;
                       end;
                       if((a1=xxx[mm][1])and(a2=xxx[mm][2])and(a5=xxx[mm][3])and(a6=xxx[mm][4]))then begin  sum:=sum+1;ListBox1.Items.Add(inttostr(a1)+','+inttostr(a2)+','+inttostr(a3)+','+inttostr(a4)+','+inttostr(a5)+','+inttostr(a6));break; end;
                       if((a1=xxx[mm][1])and(a3=xxx[mm][2])and(a4=xxx[mm][3])and(a5=xxx[mm][4]))then begin  sum:=sum+1;ListBox1.Items.Add(inttostr(a1)+','+inttostr(a2)+','+inttostr(a3)+','+inttostr(a4)+','+inttostr(a5)+','+inttostr(a6));break; end;
                       if((a1=xxx[mm][1])and(a3=xxx[mm][2])and(a4=xxx[mm][3])and(a6=xxx[mm][4]))then begin  sum:=sum+1;ListBox1.Items.Add(inttostr(a1)+','+inttostr(a2)+','+inttostr(a3)+','+inttostr(a4)+','+inttostr(a5)+','+inttostr(a6));break; end;
                       if((a1=xxx[mm][1])and(a3=xxx[mm][2])and(a5=xxx[mm][3])and(a6=xxx[mm][4]))then begin  sum:=sum+1;ListBox1.Items.Add(inttostr(a1)+','+inttostr(a2)+','+inttostr(a3)+','+inttostr(a4)+','+inttostr(a5)+','+inttostr(a6));break; end;
                       if((a1=xxx[mm][1])and(a4=xxx[mm][2])and(a5=xxx[mm][3])and(a6=xxx[mm][4]))then begin  sum:=sum+1;ListBox1.Items.Add(inttostr(a1)+','+inttostr(a2)+','+inttostr(a3)+','+inttostr(a4)+','+inttostr(a5)+','+inttostr(a6));break; end;
                       if((a2=xxx[mm][1])and(a3=xxx[mm][2])and(a4=xxx[mm][3])and(a5=xxx[mm][4]))then begin  sum:=sum+1;ListBox1.Items.Add(inttostr(a1)+','+inttostr(a2)+','+inttostr(a3)+','+inttostr(a4)+','+inttostr(a5)+','+inttostr(a6));break; end;
                       if((a2=xxx[mm][1])and(a3=xxx[mm][2])and(a4=xxx[mm][3])and(a6=xxx[mm][4]))then begin  sum:=sum+1;ListBox1.Items.Add(inttostr(a1)+','+inttostr(a2)+','+inttostr(a3)+','+inttostr(a4)+','+inttostr(a5)+','+inttostr(a6));break; end;
                       if((a2=xxx[mm][1])and(a3=xxx[mm][2])and(a5=xxx[mm][3])and(a6=xxx[mm][4]))then begin  sum:=sum+1;ListBox1.Items.Add(inttostr(a1)+','+inttostr(a2)+','+inttostr(a3)+','+inttostr(a4)+','+inttostr(a5)+','+inttostr(a6));break; end;
                       if((a2=xxx[mm][1])and(a4=xxx[mm][2])and(a5=xxx[mm][3])and(a6=xxx[mm][4]))then begin  sum:=sum+1;ListBox1.Items.Add(inttostr(a1)+','+inttostr(a2)+','+inttostr(a3)+','+inttostr(a4)+','+inttostr(a5)+','+inttostr(a6));break; end;
                       if((a3=xxx[mm][1])and(a4=xxx[mm][2])and(a5=xxx[mm][3])and(a6=xxx[mm][4]))then begin  sum:=sum+1;ListBox1.Items.Add(inttostr(a1)+','+inttostr(a2)+','+inttostr(a3)+','+inttostr(a4)+','+inttostr(a5)+','+inttostr(a6));break; end;                       end;
                       end
                   end
                end
        end;
      label1.Caption:=FloatToStr(sum);//*输出总数*/
      end;

解决方案 »

  1.   

    还是自己查代码吧,line 取值有没有问题
      

  2.   

      for mm:=1 to line do 

    怎么可能都是0呢? 
      

  3.   

    line的值读取进来了,但是mm的值却始终是0
      

  4.   

     
    我的意思是 只要a1到a6与xxx[ii][1]到xxx[ii][1]中任一组其中四个相同就 mm置1,同时跳出循环体,往下执行;我写的break 对吗?现在执行出来的结果和我的设想完全不同啊。大家帮我参谋一下。
     for ii:=1 to  line do                      begin                       if((a1=xxx[ii][1])and(a2=xxx[ii][2])and(a3=xxx[ii][3])and(a4=xxx[ii][4]))then begin mm:=1; break; end;   //  有四个相同1
                           if((a1=xxx[ii][1])and(a2=xxx[ii][2])and(a3=xxx[ii][3])and(a5=xxx[ii][4]))then begin mm:=1; break; end;
                           if((a1=xxx[ii][1])and(a2=xxx[ii][2])and(a3=xxx[ii][3])and(a6=xxx[ii][4]))then begin mm:=1; break; end;
                           if((a1=xxx[ii][1])and(a2=xxx[ii][2])and(a4=xxx[ii][3])and(a5=xxx[ii][4]))then begin mm:=1; break; end;
                           if((a1=xxx[ii][1])and(a2=xxx[ii][2])and(a4=xxx[ii][3])and(a6=xxx[ii][4]))then begin mm:=1; break; end;
                           if((a1=xxx[ii][1])and(a2=xxx[ii][2])and(a5=xxx[ii][3])and(a6=xxx[ii][4]))then begin mm:=1; break; end;
                           if((a1=xxx[ii][1])and(a3=xxx[ii][2])and(a4=xxx[ii][3])and(a5=xxx[ii][4]))then begin mm:=1; break; end;
                           if((a1=xxx[ii][1])and(a3=xxx[ii][2])and(a4=xxx[ii][3])and(a6=xxx[ii][4]))then begin mm:=1; break; end;
                           if((a1=xxx[ii][1])and(a3=xxx[ii][2])and(a5=xxx[ii][3])and(a6=xxx[ii][4]))then begin mm:=1; break; end;
                           if((a1=xxx[ii][1])and(a4=xxx[ii][2])and(a5=xxx[ii][3])and(a6=xxx[ii][4]))then begin mm:=1; break; end;
                           if((a2=xxx[ii][1])and(a3=xxx[ii][2])and(a4=xxx[ii][3])and(a5=xxx[ii][4]))then begin mm:=1; break; end;
                           if((a2=xxx[ii][1])and(a3=xxx[ii][2])and(a4=xxx[ii][3])and(a6=xxx[ii][4]))then begin mm:=1; break; end;
                           if((a2=xxx[ii][1])and(a3=xxx[ii][2])and(a5=xxx[ii][3])and(a6=xxx[ii][4]))then begin mm:=1; break; end;
                           if((a2=xxx[ii][1])and(a4=xxx[ii][2])and(a5=xxx[ii][3])and(a6=xxx[ii][4]))then begin mm:=1; break; end;
                           if((a3=xxx[ii][1])and(a4=xxx[ii][2])and(a5=xxx[ii][3])and(a6=xxx[ii][4]))then begin mm:=1; break; end;
      end;
      

  5.   

    调试的时候,怎样查看listbox中已经添加的值?
      

  6.   

    我重新装了一下系统,再把生出的exe文件删除,再重新编译,运行又正常了。但是原因还是没找到,不过谢谢大家的帮助!