fs := TfileStream.Create(Myfile,fmCreate);
此代码有效:
for RecordGroup := 0 to TotalGroups - 1 dobegin for RecordNumber := 0 to Length(MyArray[RecordGroup]) - 1 do begin fs.WriteBuffer(MyArray[RecordGroup,RecordNumber],SizeOf(MyRecord)); end;end;
当我删除内部循环以编写更大的块时,代码不起作用:
for RecordGroup := 0 to TotalGroups - 1 dobegin fs.WriteBuffer(MyArray[RecordGroup],SizeOf(MyRecord) * Length(MyArray[RecordGroup]));end;
我得到通用错误’Stream write error’
SizeOf(MyRecord)* Length(MyArray [RecordGroup])的值是180 * 152,004 = 27,360,720
我读过的所有内容基本上都说这是正确的.我有什么想法我做错了吗?
提前感谢您的任何想法.
解决方法 将编写代码更改为(注意方括号中的附加0)fs.WriteBuffer(MyArray[RecordGroup,0],SizeOf(MyRecord) * Length(MyArray[RecordGroup]));
错误是动态数组使用错误.我假设MyArray是二维数组,因此MyArray [RecordGroup]是1D动态数组 – 本质上是指向数据的指针 – 但WriteBuffer的无类型var参数需要使用数组数据体.
除了注意 – 你的for循环计数器从0到TotalGroups,所以循环的总数是TotalGroups 1.它是否正确?
总结以上是内存溢出为你收集整理的是不是Delphi TFileStream WriteBuffer Int64的大小?我一次只能写少量全部内容,希望文章能够帮你解决是不是Delphi TFileStream WriteBuffer Int64的大小?我一次只能写少量所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)