从Delphi中的默认属性直接访问记录的变量部分

从Delphi中的默认属性直接访问记录的变量部分,delphi,Delphi,我有以下关于变型零件的记录: RVector3 = packed record [...] case byte of 0 : (X : Single; Y : Single; Z : Single); 1 : (XY : RVector2); 2 : (Element : array [0 .. 2] of Single); end; 为了更快地访问单个元素,我想添加一个默认属性 function GetElement(Index : Integer) : Si

我有以下关于变型零件的记录:

RVector3 = packed record
  [...]
  case byte of
    0 : (X : Single; Y : Single; Z : Single);
    1 : (XY : RVector2);
    2 : (Element : array [0 .. 2] of Single);
end;
为了更快地访问单个元素,我想添加一个默认属性

function GetElement(Index : Integer) : Single;
procedure SetElement(Index : Integer; const Value : Single);
property Elements[index : Integer] : Single read GetElement write SetElement; default;
所以我可以用myVector[Dim]代替myVector.Element[Dim]。 现在我想知道是否有任何方法可以省略getter和setter方法,直接访问变量部分。我知道有可能这样做

TTestClass = class
  private
    FTestVector : RVector3;
  public
    property Test : single read FTestVector.Y write FTestVector.X;
end;
但是否有可能将此应用于记录?比如

property Elements[index : Integer] : Single read Element[Index] write Element[Index]; default;

很遗憾,它不起作用。

不,属性getter或setter不可能直接访问数组的元素。您需要使用getter和setter函数。为了优化性能,如果这对您很重要,您可以内联标记getter和setter函数