for中出现了UFO之事?
PDWglRecord = ^TDWglRecord;
TDWglRecord= packed record
ACol:longint;
ARow:longint;
end;
TDWglAr=array[MINA..MAXA] of TDWglRecord;//
gline:array[1..4,1..2] of integer;//画直线
glcellx:TDWglAr;
for gi:=1 to 4 do //////
begin
glcellx[gi].ACol:=gline[gi,2] + 2 ;
glcellx[gi].ARow:=gline[gi,1];
gdrid.DWLineA[gi]:= glcellx[gi];
gline[gi,1]:=0;gline[gi,2]:=0;
end;
glx:=0; //如果加 gi:=5 怪了
for gi:=5 to 8 do //问题所在
if gcell[gi,1] <>0 then begin
glx:=glx+1;
gline[glx,1]:=gcell[gi,1];
gline[glx,2]:=gcell[gi,2];
end;
大家看上面的代码,真是奇怪了,我调试老是出错,到第2个for gi就等于 4 (明明这样了啊for gi:=5 to 8 do)
更奇怪的是 如果在其上家gi:=5;那么下来第二个for就是递减.郁闷,怪啊!
大家测试一下看不是是啊
上面那段代码我是写在一个函数中,变量申明我写在上面了,这2个for就是这样,中间没有其他代码.
[解决办法]
setlength
[解决办法]
我测试了你的代码,是DELPHI里的查看变量的BUG,程序结果是正确的。
type PDWglRecord = ^TDWglRecord; TDWglRecord = packed record ACol: longint; ARow: longint; end; TDWglAr = array[0..100] of TDWglRecord;procedure TFmMain.btn1Click(Sender: TObject);var gline: array[1..4,1..2] of Integer;//画直线 glcellx: TDWglAr; gi, glx: Integer;begin glcellx[1].ACol := 100; glcellx[1].ARow := 100; for gi:=1 to 4 do ////// begin glcellx[gi].ACol:=gline[gi,2] + 2 ; glcellx[gi].ARow:=gline[gi,1]; //gdrid.DWLineA[gi]:= glcellx[gi]; gline[gi,1]:=0;gline[gi,2]:=0; end; glx:=0; //如果加 gi:=5 怪了 for gi:=5 to 8 do //问题所在 begin //if gcell[gi,1] <>0 then begin glx:=glx+1; //gline[glx,1]:=gcell[gi,1]; //gline[glx,2]:=gcell[gi,2]; //end; end;end;
[解决办法]
我也测了,没问题