我正在使用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定义。
我有什么想念吗?
答案 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。最近添加了对泛型类型的帮助程序的支持,因此它可能是当前实现的一种限制。