var
pa:array of array of double; ... setlength(pa,100,100); 此句报错 setlength(pa,10000); 改成这样能通过,但后面使用中出错
是什么原因,是不是delphi的数组大小定义有限制
pa:array of array of double; ... setlength(pa,100,100); 此句报错 setlength(pa,10000); 改成这样能通过,但后面使用中出错
是什么原因,是不是delphi的数组大小定义有限制
解决方案 »
- 怎样读取一个英文的txt文件,并统计各个单词出现的频率!!!
- 怎样提取一个Exe文件的字符串资源?
- 作坊离工厂究竟有多远 (一)
- 关于dblookupcombobox
- 现在大家常用的Delphi版本是什么?
- COM+ 中,Apartment 线程模型的对象不能被放入 Object Pooling!?
- 跪求实现sql导出到excel的完整代码(例子)
- 在DELPHI中有没有如同C中BREAK的语句呢???
- 为什么不能改变TClientDataSet的CommandText属性?
- 关于日期转换
- TADOTable控件上有Lookup字段,还可以使用Table.Append([...])函数吗???
- 哪位大哥能教教小弟如何制作自制的可以拖动的组件???急!!!万分感谢!!!
还需要定于第二层的,setlength(pa,100)
for N:=0 to 99 do
setlength(pa[N],100)
应该SETLENGTH(PA,100*100)
这样就可以了。
var
pa:array of array of double; ... setlength(pa,100,100); 此句没有任何问题 setlength(pa,10000); 此句肯定会出错,无论你是用一维还是二维的方式存取。因为定义是用二维的,而设置长度却是一维的,实际设置的是行,不出错才怪。
并不是delphi的数组大小定义有限制
第一种是一次性把两维的长度都设置了。
第二种只设置了第一维,但可以接着设置第二维。
比如
setlength(pa,100);
setlength(pa[0],100);
setlength(pa[1],100);
...
setlength(pa[99],100);
你的错误不是这个设置的原因。
补充一点,第二点的好处是显而易见的,因为请看:
type
TTestArray:array of array of double;
var
Array1,Array2:TTestArray;
//用第一种即一次性指定的方法,方便但缺少灵活性
SetLength(Array1,100,100);
//用第二种即先指定第一维的方法,麻烦但太灵活了
SetLength(Array2,100);
SetLength(Array2[0],10);
SetLength(Array2[1],25);
...
SetLength(Array2[35],5);
...
SetLength(Array2[99],100);