我写的按钮的代码,为什么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;
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;
怎么可能都是0呢?
我的意思是 只要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;