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就是这样,中间没有其他代码.
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就是这样,中间没有其他代码.
我这不是动态数组,我说的是变量gi在for中的问题,gi只是个integer变量,奇怪的是2个for一起的话并且变量名一样好象就出问题了,循环变量就出错,是不delphi编译器的问题啊,delphi7下测试的
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;