在 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编译器来说并不重要。
有人知道如何做这样的事情吗?
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编译器来说并不重要。