1

可以说我为 TStringList 写了助手

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

然后我将这个助手(定义助手的单元)包含在我想使用它的单元中。在调试期间,我点击Ctrl+F7并且我想评估:

someStringList.DoSth

我无法让它工作。是否可以?

4

1 回答 1

3

类助手将新方法引入当前范围。如果类助手不在范围内,则其方法不会生效,即使它们帮助的类是。因此,使其工作的第一步是确保它TslHelper是在程序当前点生效的类助手。

如果您满足了该要求,但它仍然无法正常工作,那么调试器可能根本无法识别类助手。无论如何,它们有点像黑客,所以如果调试器没有识别它们,我不会太惊讶。归根结底,类助手只是语法糖。上面的类助手可以很容易地写成一个独立的函数,像这样:

function TStringList_DoSth(SL: TStringList): Boolean;

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

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

您可以继续在正常代码中调用类助手方法,但您可以回退到调试器中的独立函数。

于 2009-09-03T14:47:12.897 回答