德尔福保存并加载动态数组 [英] delphi Save and Load dynamic array
本文介绍了德尔福保存并加载动态数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
请有人可以帮助我在拯救,并从流加载其动态数组
常量
iGlobHolderCount = 100; 类型
TFiLeSpec =记录
iSize:整数;
结束; TFileSpecLst = TFiLeSpec阵列; TFiLeSpecList =记录
伊明:整数;
IMAX:整数;
ICOUNT:整数;
FileSpecLst:TFileSpecLst;
结束;
VAR
FFileSpec:TFiLeSpec的阵列;FFileSpecList:数组[1 .. iGlobHolderCount] TFiLeSpecList的;
解决方案
先写一个数组的长度,和旁边的阵列数据:
键入
TItem =整数;
TItemArray = TItem阵列;VAR
流:TStream;
编曲:TItemArray;
L:长字;开始
编曲:= TItemArray.Create(1,2,3);
//保存
流:= TFileStream.Create('C:\\ TEMP \\ TEST.bin,烧写',fmCreate);
L:=长度(ARR);
Stream.WriteBuffer(L,一下SizeOf(L));
Stream.WriteBuffer(指针(ARR)^,L *一下SizeOf(TItem));
Stream.Free;
// 加载
流:= TFileStream.Create('C:\\ TEMP \\ TEST.bin,烧写',fmOpenRead);
Stream.ReadBuffer(L,一下SizeOf(L));
SetLength函数(编曲,L);
Stream.ReadBuffer(指针(ARR)^,L *一下SizeOf(TItem));
Stream.Free;
结束;
please can someone help me in saving and loading its Dynamic array from a Stream
const
iGlobHolderCount = 100;
type
TFiLeSpec = record
iSize: Integer;
end;
TFileSpecLst = array of TFiLeSpec;
TFiLeSpecList = record
iMin: Integer;
iMax: Integer;
iCount: Integer;
FileSpecLst: TFileSpecLst;
end;
var
FFileSpec: array of TFiLeSpec;
FFileSpecList: array [1 .. iGlobHolderCount] of TFiLeSpecList;
解决方案
Write first the length of an array, and next the array data:
type
TItem = Integer;
TItemArray = array of TItem;
var
Stream: TStream;
Arr: TItemArray;
L: LongWord;
begin
Arr:= TItemArray.Create(1, 2, 3);
// To save
Stream:= TFileStream.Create('C:\Temp\test.bin', fmCreate);
L:= Length(Arr);
Stream.WriteBuffer(L, SizeOf(L));
Stream.WriteBuffer(Pointer(Arr)^, L * SizeOf(TItem));
Stream.Free;
// To load
Stream:= TFileStream.Create('C:\Temp\test.bin', fmOpenRead);
Stream.ReadBuffer(L, SizeOf(L));
SetLength(Arr, L);
Stream.ReadBuffer(Pointer(Arr)^, L * SizeOf(TItem));
Stream.Free;
end;
这篇关于德尔福保存并加载动态数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文