在 Delphi 中记录自己的数组

Record with Array of itself in Delphi

有人知道如何做这样的事情吗?

type TFileRecord = record
    Name: String;
    CreationTimeStamp: DWORD;
    Subfiles: Array of TFileRecord;
end;

我正在使用 Delphi 10.4.

在我的Delphi 10.4.1中肯定可以有这样的声明:

unit TestUnit;

interface

type
  TFileRecord = record
    Name: String;
    CreationTimeStamp: Cardinal; //DWORD;
    Subfiles: Array of TFileRecord;
  end;

Procedure TestTFR;

implementation

Procedure TestTFR;
var
  TFR : TFileRecord;
begin
  SetLength(TFR.SubFiles,2);
  SetLength(TFR.Subfiles[0].Subfiles,2);
end;    

end.

此功能于 Delphi 2009 年推出。 在此之前,编译器抱怨TFileRecord is not yet completely defined.

正如评论中所讨论的,动态数组的大小只能是指针的大小,这是编译器架构师当时意识到的。知道了,类型声明的终结对于single pass编译器来说并不重要。