首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

for中出现了UFO之事?解决方法

2012-02-20 
for中出现了UFO之事?PDWglRecord ^TDWglRecordTDWglRecord packed recordACol:longintARow:longinte

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,程序结果是正确的。

Delphi(Pascal) code
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;
[解决办法]
我也测了,没问题

热点排行