for m := 1 to 35 do
if bnum[m] = bnum[m+1] then astr := astr + ',' + inttostr(anum[m])
else astr := astr + chr(13) + chr(10) + inttostr(bnum[m]) + ':' + inttostr(anum[m]);这样一条语句,我逐句观察的时候,发现m是从35往1走得,睡知道怎么回事?
另外,在这段程序外,不能对m进行赋值,即使赋了,也不提示错,但运行中空过此行?
if bnum[m] = bnum[m+1] then astr := astr + ',' + inttostr(anum[m])
else astr := astr + chr(13) + chr(10) + inttostr(bnum[m]) + ':' + inttostr(anum[m]);这样一条语句,我逐句观察的时候,发现m是从35往1走得,睡知道怎么回事?
另外,在这段程序外,不能对m进行赋值,即使赋了,也不提示错,但运行中空过此行?
可能是不是你别的地方定义错了啊?
最大的可以是bnum[x]和anum[x]的附值顺序错了.
在循环过程中是不能对循环变量进行赋值的,在循环体外,m就不时循环变量了,这时可对其赋值.为什么会出现你所说的情况要看代码啦.
var
astr : string;
i,j,m,a1,b1 : integer;
aNum, bNum : array [1..36] of integer;
begin
astr := '';
for i := 1 to 36 do begin aNum[i] := strtoint(StringGrid1.cells[i, StringGrid1.RowCount-5]); bNum[i] := i; end;
for i := 1 to 35 do
&&&&&&&&&&&&&&
for j := i + 1 to 36 do
&&&&&&&&&&&&&&
if aNum[i] > aNum[j] then
begin
a1 := aNum[i]; aNum[i] := aNum[j]; aNum[j] := a1;
b1 := bNum[i]; bNum[i] := bNum[j]; bNum[j] := b1;
end;astr := inttostr(anum[1])+ ':' + inttostr(bnum[1]) ;
********
for m := 1 to 35 do
if bnum[m] <> bnum[m+1] then astr := astr + chr(13) + chr(10) + inttostr(anum[m+1])+ ':' + inttostr(bnum[m+1]) else astr := astr + ',' + inttostr(anum[m+1]);
********memo1.Lines.Add(astr);
end;就是在********之间的代码出现了上面的问题,另外,如果把&&&&&&&&&&&&&&之间的for j := i + 1 to 36 do 换成j := 2 to 36 do也会出现类似的问题,究竟怎么回事呀?