arrays - delphi 保存和加载动态数组

标签 arrays delphi

请有人帮助我从流中保存和加载其动态数组

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;

最佳答案

首先写入数组的长度,然后写入数组数据:

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;

关于arrays - delphi 保存和加载动态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9032115/

相关文章:

delphi - 在Delphi中实现观察者模式的最佳方法

javascript - 如何使用 javascript 或 lodash 重新排序对象属性数组

javascript - 如何转换一个数组中的首字母以匹配第二个数组中的值

postgresql - 使用 Array_append 在创建 PostgreSQL 函数时出现语法错误

php - 从字符串中拆分数字和拉丁字母

javascript - 如何在我的特定情况下形成嵌套数组的数组?

forms - 如何将一个 Delphi 窗体移到另一个窗体前面?

delphi - 使用 Windows 凭据管理器时切换用户名和密码

delphi - 将一个 TForm 嵌入另一个 TForm 时如何避免出现问题?

android - 如何在 firemonkey Delphi XE 8 的 Android 通知栏(如 Facebook 等)中使用外部大图像?