var
myfile:TfileStream;
mybuf:array of Pchar;
begin
myfile:=TfileStream.Create('d:/a.txt',fmOpenReadWrite);
setlength(mybuf,myfile.size);
myfile.ReadBuffer(mybuf[0],myfile.Size);
//delete(String(mybuf),1,myfile.Size-4);
showmessage(pchar(mybuf));
因为delphi中的静态组是在运行前就分配好了,所以它的变量地址就是些数组的第一维地址,即没有描述部份,故它的sizeof为1个字节,而动态数组是在运行期间动态分配一个内存块,所以它的变量地址部分需要一个描述部分,故它的sizeof为四个字节,用于存放描述表,所以在 Readbuffet时,需要采用些数组的第一维地址为起始地址,才不会导致溢出。
本文介绍了使用Delphi进行文件读取操作时,如何正确利用动态数组读取整个文件内容,并解释了静态数组与动态数组在内存分配上的区别。
1186

被折叠的 条评论
为什么被折叠?



