且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

德尔福保存并加载动态数组

更新时间:2023-02-02 18:51:55

先写一个数组的长度,和旁边的阵列数据:

 键入
  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;