delphi2010上发生的关于数组的一个奇怪有关问题 请大家帮忙分析一上

delphi2010下发生的关于数组的一个奇怪问题 请大家帮忙分析一下
delphi2010下发生的关于数组的一个奇怪问题 请大家帮忙分析一下




setlength 1 以后,数组的长度应该是1吧,可为什么还显示为0呢?


------解决方案--------------------
由于数组默认下标起始为0,而函数high返回的是数组下标的最大值(而不是长度,莫混了!),当你设置它的长度为1时,最大和最小的下标都为0,它自然就显示 0 了。
------解决方案--------------------
多线程?
------解决方案--------------------
因为不知道你具体的环境,没法分析(或做个demo让我看看?190814570@qq.com)。我这里没你说的问题出现:
Delphi(Pascal) code
//测试环境:xp + delphi2010
procedure TForm1.Button1Click(Sender: TObject);
var f:array of TForm;
begin
  setlength(f,3);
  showmessage(inttostr(high(f)));//显示 2
  showmessage(inttostr(length(f)));//显示 3
end;

------解决方案--------------------
鼠标指向的提示不一定是你想要的值

比如一个integer变量,只是赋初值,后面若没有用到就会被优化掉一样
看到的值可能是0或者没有显示;这种问题没必要深究,用showmessage();显示出来是多少就是多少