可以说我为TStringList编写了助手

TslHelper = class helper for TStringList
  function DoSth: boolean;
end;


然后,我将这个助手(定义了助手的单元)包含在我要使用的单元中。
在调试期间,我按了Ctrl + F7,我想评估一下:

someStringList.DoSth


我无法正常工作。可能吗?

最佳答案

类助手将新方法引入当前范围。如果类帮助程序不在范围内,则即使其帮助的类处于有效状态,其方法也不会生效。因此,使其生效的第一步是确保TslHelper是将在程序当前位置生效的类帮助程序。

如果您满足了该要求,但仍然无法使用,则调试器可能根本无法识别类助手。无论如何,它们都是一个小技巧,所以如果调试器无法识别它们,我也不会感到惊讶。最终,班级助手只是语法糖。上面的类帮助器可以像独立函数一样容易地编写,如下所示:

function TStringList_DoSth(SL: TStringList): Boolean;


使用您当前的方法实现编写该函数,然后使用该函数实现您的类助手:

function TslHelper.DoSth: Boolean;
begin
  TStringList_DoSth(Self);
end;


您可以继续在常规代码中调用class-helper方法,但可以使用调试器中的独立功能。

10-05 22:16