我可以为TBytes定义记录助手吗?

Cha*_*ang 6 delphi delphi-xe4

我正在使用Delphi XE4.我尝试为TBytes定义一些辅助函数:

TBytesHelper = record helper for TBytes
public
  function GetLength: integer;
end;

function TBytesHelper.GetLength: integer;
begin
  Result := System.Length(Self);
end;
Run Code Online (Sandbox Code Playgroud)

当我尝试使用新的辅助函数时:

var B: TBytes;
    i: integer;
begin
  B := TBytes.Create(1,2,3);
  i := B.GetLength;

  if i <> Length(B) then
    raise Exception.Create('Incorrect result');
end;
Run Code Online (Sandbox Code Playgroud)

我除了结果为iIS 3但事实并非如此.我在SysUtils.pas中引用具有类似构造的TStringHelper定义.

有什么我想念的吗?

And*_*tyn 3

这个问题在这里讨论: https://forums.embarcadero.com/thread.jspa ?threadID=88409 简而言之 - 您可以定义自己的类型并将其与记录助手一起使用:

type
 TMyBytes = array of Byte;

 TBytesHelper = record helper for TMyBytes
   function GetLength: integer;
 end; 
Run Code Online (Sandbox Code Playgroud)

但它不适用于 Delphi 中定义的 TByte。最近添加了对泛型类型的帮助程序的支持,因此这可能是当前实现的限制。