德爾福記錄幫手我有這樣的代碼:備案
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。在這裏使用助手是完全濫用功能。 –