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

时间:2013-06-11 08:36:49

标签: 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;

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

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;

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

我有什么想念吗?

1 个答案:

答案 0 :(得分:3)

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

type
 TMyBytes = array of Byte;

 TBytesHelper = record helper for TMyBytes
   function GetLength: integer;
 end; 

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