博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
delphi 动态数组
阅读量:5109 次
发布时间:2019-06-13

本文共 1051 字,大约阅读时间需要 3 分钟。

 在设计一些需要数组的例程时,可能不知道该数组中会需要多少个元素,可能是10个,100个,1000个等.这些都只有到了实际运行的时候才能得到答案.由于对数组不确定大小,因此很难将数组声明一个局部变量(声明过大,会使栈负担过重),所以在堆上进行分配.

delphi支持的第一种技术

type
PMyArray:^TMyArray;  TMyArray : Array[0..0] of TMyType; //声明一个TMyType类型的数组 begin   GetMem(PMyArray,42 * SizeOf(TMyType));//分配42个TMyType内存大小    //释放PMyArray    FreeMem(PMyArray,42 * SizeOf(TMyType)); end;

直到释放内存,PMyArray都指向一个包含42个TMyType元素的数组,编译代码时无法使用{$R+}进行越界检查,因为编译器认为数组中只有一个元素.因此只有一个下标能使用=>0

第二种方法

  通过将数组类型的上界置为一个很大的数,也可以解决,但会带来一个负面的作用:作何未达到上界的限制的下标值都将变得合法.如 

  对于一个42个某种类型的元素数组,若分配以1000个元素,在编译进行越界检查时,所以42~999的下标都将合法

    第二个问题 是所分配的变量对于数组中有多少元素没有记录,一般情况下,必须将元素的个数保存为一个变量,并且对应于所分配的数组确定此变量.这样就可以自行完成越界检查.

  不过,在我们每天的编程工作中这一技术扔然得到了大量作用.例如,SysUtils单元中有一个极为灵活的数组类型 TByteArray 指向些类型的指针为PByteArray.使用这个类型(或其指针),可以很容易地将一个无类型缓冲区参数的参数的类型强制为一个字节数组.其中还有其他一些数组类型.比如longint word等

 所以,最好的想法是创建一个数组类,从而使你可以根据需要来分配尽可能多的元素,甚至可以扩展或缩小数组的大小(增加或减少元数个数). 因些,类似于对元素进行排序、删除、或插入一个新元素等等其他的一些方法也就很容易了.基本做法是创建一个数组类的实例,在构造函数中声明每个元素的大小,再由对象来处理内存分配问题 

模拟List类 TAdvRecordList

明天写

转载于:https://www.cnblogs.com/pengshao/archive/2011/09/27/2193580.html

你可能感兴趣的文章
【机器学习】--Python机器学习库之Numpy
查看>>
Android下的屏幕适配
查看>>
Altium Designer 查看板子厚度
查看>>
什么是Python?(第一印象)
查看>>
系统优化设计笔记--曹大公众号文章笔记
查看>>
第一个Android程序
查看>>
Java并发编程(八)不变性
查看>>
Unix系统编程()文件控制操作fcntl
查看>>
Hadoop开发相关问题
查看>>
Velocity 语法详解
查看>>
Jetty 安装、启动与项目部署
查看>>
su的使用与退出
查看>>
Excel 下来公式 内容却一样
查看>>
‘初始化锁相环INIT_PLL()’
查看>>
队列及其实现
查看>>
WPF 窗体显示最前端
查看>>
SpringBoot两种读取配置文件的方式
查看>>
尼克的任务
查看>>
github搭建个人网站
查看>>
学习Git
查看>>