德尔福记录帮手我有这样的代码:备案
type
TSolution = record
x1, x2, i1, i2: double;
end;
TSupport = record helper for TSolution
function toFraction: string;
end;
而且我希望能够调用这样的内部(例如)按钮单击事件:
var k: TSolution;
begin
//...
Memo1.Lines.Add(k.x1.toFraction);
//...
end;
在哪里toFraction是我写的将double转换为fraction的函数。我认为记录帮手就是我需要的,但为什么这不起作用?
{ TSupport }
function TSupport.toFraction: string;
begin
Result := TFunction.DoubleToFraction(self);
end;
如果你想知道,TFunction
是一个类(在同一单元作为记录/记录助手),它具有DoubleToFraction类函数返回过程的字符串。
E2010不兼容的类型:“双师型”和“TSolution”
确定这是错误,但如果我不使用自话,我怎么可以把参数?参数可以是x1,x2,i1或i2,具体取决于我需要的。在上面的例子中,在Memo1中,我应该将x1(参数)转换为分数。在这里做什么?
我已经注意到,如果你写例如
TSupport = record helper for double
然后自我的作品!基本上我想知道如何避免自我提及TSolution记录,而是涉及双重领域。
但是,为什么你需要帮助你自己的类型?为什么不将功能/属性添加到TSolution? – MBo
@MBo因为我已经有了toFraction的类函数。我想能够添加到我的TSolution“快速”像k.x1.toFraction而不是k.toFraction(k.x1) –
这完全忽略了这一点。将一个方法添加到调用你的类函数的TSolution。在这里使用助手是完全滥用功能。 –