2012-11-27 10 views

回答

4

有沒有從Math.pas包括標準功能。所有這一切都在默認的評價解析器實現是運營商orxorandnotmod+-/*<><=>==divcmpborbxorbandbnotshlshr。 (儘管我在快速查看源代碼時發現了很多內容,並且根據@David的評論錯過了一些內容)。

您可以相當容易地將函數(包括那些屬於Delphi RTL的函數)添加到評估程序中。它甚至在演示中顯示,它添加了JCL單元之一的功能。

默認在JCL\examples\common\expreval文件夾中的JCL評估示例(ExprEvalExample.dpr)穿過一個TComboBox.ItemsExprEvalExampleLogic.pasInit函數作爲FuncList參數,其通過該代碼填充(在TEasyEvaluator在相同的給定的功能例程)從JclMath.pas功能:

with FuncList do 
    begin 
    Add('LogBase10'); 
    Add('LogBase2'); 
    Add('LogBaseN'); 
    Add('ArcCos'); 
    Add('ArcCot'); 
    Add('ArcCsc'); 
    Add('ArcSec'); 
    Add('ArcSin'); 
    Add('ArcTan'); 
    Add('ArcTan2'); 
    Add('Cos'); 
    Add('Cot'); 
    Add('Coversine'); 
    Add('Csc'); 
    Add('Exsecans'); 
    Add('Haversine'); 
    Add('Sec'); 
    Add('Sin'); 
    Add('Tan'); 
    Add('Versine'); 
    Add('ArcCosH'); 
    Add('ArcCotH'); 
    Add('ArcCscH'); 
    Add('ArcSecH'); 
    Add('ArcSinH'); 
    Add('ArcTanH'); 
    Add('CosH'); 
    Add('CotH'); 
    Add('CscH'); 
    Add('SecH'); 
    Add('SinH'); 
    Add('TanH'); 
    end; 

這些將在演示應用程序所支持的功能。你可以用類似的方式添加你自己的。

+0

我不明白爲什麼你重複我的答案,然後加入與問題無關的額外的內容加載。 –

+0

當我最初發布我的回答,那是你的編輯之前(當時它甚至沒有包括有關支持運營商的信息),而你的「這是很輕鬆」的判決是非常不同的。我張貼的基礎運營商的列表,以演示一個參考,看看如何添加它們,示例代碼從該演示展示瞭如何。我不太明白你的反對意見;你一直這樣做(重複別人已經說過的話,不同的措辭和其他細節)。這是你所積累的代表的相當一部分(如服用其他的評論爲你的答案。 –

+0

編輯歷史,我的回答不會與你說什麼異議,我不會咬你的最後一句話。無論如何,看起來像選民喜歡你的版本! –

3

沒有預定義的功能都包括在內。有標準算術運算符:+, - ,*,div和mod。還有所有標準的邏輯運算符和按位運算符。但沒有像abs,sin,exp,log等等,你必須把這些放在自己身上。這是十分容易添加的功能,我認爲這是一個很好的設計,讓你選擇你的評估支持什麼。

+0

好,感謝您的幫助 – ssnkh