为什么在尝试为字符串实现类助手时会出现E2029错误?

时间:2015-04-24 12:17:46

标签: delphi delphi-xe2

我们想要创建一个非常方便和稳定的数据类型转换,这里使用Delphi中的class helper功能进行字符串数据类型转换。

type
  TStringHelper = class helper for String
  public
    function AsBoolean: Boolean;
    ...
  end;

{ TStringHelper }

function TStringHelper.AsBoolean: Boolean;
begin
  Result := False;
  try
    Result := StrToBool(Self);
  except
  end;
end;

当我尝试在Delphi XE2中编译上面的代码时,我得到:

  

E2029“预期声明但发现字符串”

我的代码有什么问题?

1 个答案:

答案 0 :(得分:3)

对于string类型,您需要使用record帮助程序而不是class帮助程序。

type
  TStringHelper = record helper for string
    ....  
  end;

请注意,基本数据类型的记录帮助程序(例如Integerdoublestring等)仅在XE3中引入,因此如果您使用旧版本,则不在运气。