让我说我为TStringList
编写了帮助器TslHelper = class helper for TStringList
function DoSth: boolean;
end;
然后我在我想要使用它的单元中包含了这个帮助器(定义了帮助器的单元)。 在调试过程中,我按 Ctrl + F7 ,我想评估:
someStringList.DoSth
我无法让它发挥作用。有可能吗?
答案 0 :(得分:3)
类助手将新方法引入当前范围。如果类助手不在范围内,则其方法不会生效,即使它们帮助的类是。因此,使其工作的第一步是确保TslHelper
是在程序中当前点生效的类助手。
如果您满足该要求,但仍然无效,则调试器可能根本无法识别类帮助程序。无论如何它们都是一个黑客攻击,所以如果调试器不能识别它们我也不会太惊讶。最终,课堂助手只是语法糖。上面的类帮助程序可以很容易地编写为独立函数,如下所示:
function TStringList_DoSth(SL: TStringList): Boolean;
使用您当前的方法实现编写该函数,然后使用该函数实现您的类助手:
function TslHelper.DoSth: Boolean;
begin
TStringList_DoSth(Self);
end;
您可以继续在普通代码中调用class-helper方法,但是您可以回退到调试器中的独立函数。