P programsky Unregistered / Unconfirmed GUEST, unregistred user! 2009-04-09 #1 因为开始无法确定要保存多少数值,我在循环体中加入了一句setlength对动态数组的长度进行操作,然后这段程序运行就不正常了,发现一些变量的内容发生变化,调试的结果显示,这正是setlength造成的那么引发了标题的问题
因为开始无法确定要保存多少数值,我在循环体中加入了一句setlength对动态数组的长度进行操作,然后这段程序运行就不正常了,发现一些变量的内容发生变化,调试的结果显示,这正是setlength造成的那么引发了标题的问题
Z Zenaster Unregistered / Unconfirmed GUEST, unregistred user! 2009-04-09 #2 LZ确定是setlength的问题么?按照Delphi里对动态数组的内存模型来看是不应该出现这种现象的啊!LZ能不能把出问题的代码贴出来看看?小弟也想学习一下
Z znxia Unregistered / Unconfirmed GUEST, unregistred user! 2009-04-09 #3 SetLength应该不会,但如果你当前设置的数组范围是 0..3,此时给 数组[4] 元素赋值,会导致其它变量的值改变。
A aahben Unregistered / Unconfirmed GUEST, unregistred user! 2009-04-09 #4 当你改变它的长度后,对应值是不变的,除非你重新对它赋值了.
X xusong168 Unregistered / Unconfirmed GUEST, unregistred user! 2009-04-10 #5 循环体中加入了一句setlength对动态数组的长度进行操作很危险的写法 在循环之前尽量分配一个够大的空间好些
W wql Unregistered / Unconfirmed GUEST, unregistred user! 2009-04-10 #6 不会出现的,可能是你在其他地方有问题,还可以用:Type _YouArr=Record A:word ... ... End YouArr=Array[1..1000] Of _YouArr;Var ArrPt : ^YouArr;begin GetMem(ArrPt) ArrPt[1].A:=;;;; FreeMem(ArrPt);end;
不会出现的,可能是你在其他地方有问题,还可以用:Type _YouArr=Record A:word ... ... End YouArr=Array[1..1000] Of _YouArr;Var ArrPt : ^YouArr;begin GetMem(ArrPt) ArrPt[1].A:=;;;; FreeMem(ArrPt);end;
不 不能没有你 Unregistered / Unconfirmed GUEST, unregistred user! 2009-04-10 #7 如果一定要放不定长度的东西我建议你用容器不要用动态数组