有点难度的变量定义?出现错误抓不到BUG?请富翁们帮我调试一下?(150分)

  • 主题发起人 主题发起人 youou
  • 开始时间 开始时间
Y

youou

Unregistered / Unconfirmed
GUEST, unregistred user!
TBuWuRG=record
x:integer;
y:integer;
dy:single;
end;
TMyBuWuRG=array [0..5] of TBuWuRG;
TData = record
case ProjType:integer of
1,2,3:(BuWuRG:array [1..3] of TMyBuWuRG);
4,5,6,7,8,9:(dy:array [4..9] of single);
end;
这样定义为了程序中赋值及访问比较方面了.

其实就是可变记录的定义与访问的问题?这样定义会有问题吗?
procedure TForm1.Button1Click(Sender: TObject);
begin
ProjRec.ProjType :=1;
ProjRec.BuWuRG[1][0].x:=1


ProjRec.ProjType :=4
//指定这两条之后值就不对
ProjRec.dy[4]:=4;

ProjRec.ProjType :=1;
ShowMessage(IntToStr(ProjRec.BuWuRG[1][0].x));

如果是[1][0]不行,而如果是[1][1..5]倒是可以?
为什么?
帮我一下!TKS!
 
ShowMessage(IntToStr(ProjRec.BuWuRG[1][0].x));
的值会是110002002?具体不是这个数字,反正就是很大了!
 
我想是我错了!

不同域是共用一个内存区的!
 
//不同域是共用一个内存区的!
当然了,类似 C 里面的 union
 
平分了!
 
后退
顶部