小编Bar*_*ick的帖子

如何使用Delphi填充Struct/Array of Records?

我想填充一系列记录,并且我最近接触过TMappedFile,我试图复制它,实际上没有使用unFileMapping或BlockRead/Write.目的是为了让我的选择保持开放.我发现的问题是它没有启动或正确创建我的阵列.

从我目前所看到的,是编译后的DataArr遗骸nil.并导致内存冲突错误(0x00000000),这意味着它是空/ null.我的工程师已经告诉我,为了达到目的,阵列的大小可能很大,并且还提到我无法做我想做的事情,除非我尊重指针,例如.DataArr^[0].value1

我相信我的困惑在于SetLength,这似乎与动态数组相反,这就是我评论它的原因.否则我会收到错误E2008 incompatible types.

type
  TDataStruct = Record
  value1 : array[0..1] of Single;
  value2 : array[0..1] of Single;
  value3 : array[0..1] of Single;
  end;

  TDataStructArray = array[0..MaxInt div SizeOf(TDataStruct) - 1] of TDataStruct;
  PDataStructArray = ^TDataStructArray;

var
  DataArr: PDataStructArray;

begin
  //SetLength(DataArr,length(DataArr)+1);
  DataArr[0].value1[0] := 2;
Run Code Online (Sandbox Code Playgroud)

我曾尝试使用其他的事情FillChar(DataArr,SizeOf(DataArr),0)和以及FillChar(DataArr[0], SizeOf(DataArr[0]) * Length(DataArr));

以下链接是我的来源

  1. 如何删除动态记录数组的索引
  2. 使用包含WideString的记录指针的New/Dispose
  3. 在Delphi中将记录的指针分配给char数组 - 再来一次?
  4. 当我不知道运行时的长度时如何声明一个数组

arrays delphi record

1
推荐指数
1
解决办法
1199
查看次数

标签 统计

arrays ×1

delphi ×1

record ×1