delphi2010下发生的关于数组的一个奇怪问题 请大家帮忙分析一下 delphi2010下发生的关于数组的一个奇怪问题 请大家帮忙分析一下setlength 1 以后,数组的长度应该是1吧,可为什么还显示为0呢? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 由于数组默认下标起始为0,而函数high返回的是数组下标的最大值(而不是长度,莫混了!),当你设置它的长度为1时,最大和最小的下标都为0,它自然就显示 0 了。 你说的明显是不对的,setlength 1以后,下标是0是对的,但长度明显不可能是0,给你看看setlength 2以后的情况。 无法显示图片,亲自己复制一下网址看图片吧,是setlength 2以后的调试 gzzai所讲的部分没错,上下标确实应该为0,是我举例不恰当,所以我又用setlength 2调试以后截图,high和len仍然为0,十分奇怪,这种情况没法使,会造成内存泄露。 因为不知道你具体的环境,没法分析(或做个demo让我看看?[email protected])。我这里没你说的问题出现://测试环境:xp + delphi2010procedure TForm1.Button1Click(Sender: TObject);var f:array of TForm;begin setlength(f,3); showmessage(inttostr(high(f)));//显示 2 showmessage(inttostr(length(f)));//显示 3end; 鼠标指向的提示不一定是你想要的值比如一个integer变量,只是赋初值,后面若没有用到就会被优化掉一样看到的值可能是0或者没有显示;这种问题没必要深究,用showmessage();显示出来是多少就是多少 用showmessage显示的结果也是这样的。 我把这些简单的语句移出try结构体赋值就正常了,但泄露问题还是偶尔存在,还不清楚原因,但不是经常出现,暂时不清楚原因。有空再深入分析吧,其他代码很长,所以无法列出,而且应该与其他代码无关,因为上面所列部分即是初次调用的简单赋值,感谢大家给出的思路。以前听说delphi2010注释多了容易出问题,但他们讲的好象是精简版本,我用的是完整版。不知道是否与此有关?我不是老手,但根本不算新手。有新发现再回来和大家共享。散分,平均分配。 gzzai 20分,kaikai_kk 15分,s11ss 5分分不多,希望大家愉快 dxdbgrid控件能否不自动按分组排序问题? Delphi 调用C#编写的WebService 颜色渐变问题 不是技术的技术问题! 关于打印的一些问题 我动态建立一个按钮,然后定义其onclick=showff(1), showff定义如下: DELPHI的问题 还是那个EDIT里输入数字的问题,有时输入的不只是整数。需要输入小数,那样就要用到'.',但这个点也不是数字。如何使它也能输入呢。如3.44? 在线的签到 请问:如何替换用delphi作的程序(.exe)中的图片?有查看这种文件资源的工具吗? 有没有这样的控件或这样的功能如何实现? qq登录后窗口右下角自动出现一消息框
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;
看到的值可能是0或者没有显示;这种问题没必要深究,用showmessage();显示出来是多少就是多少
用showmessage显示的结果也是这样的。
我把这些简单的语句移出try结构体赋值就正常了,但泄露问题还是偶尔存在,还不清楚原因,但不是经常出现,暂时不清楚原因。有空再深入分析吧,其他代码很长,所以无法列出,而且应该与其他代码无关,因为上面所列部分即是初次调用的简单赋值,感谢大家给出的思路。以前听说delphi2010注释多了容易出问题,但他们讲的好象是精简版本,我用的是完整版。不知道是否与此有关?
我不是老手,但根本不算新手。有新发现再回来和大家共享。散分,平均分配。