parser10.zip |
|
領航天使
站長 發表:12216 回覆:4186 積分:4084 註冊:2001-07-25 發送簡訊給我 |
檔案名稱:parser10.zip
版 本:10.1
原始程式:有(Source)
適用版本:(D1) (D2) (D3)
版權種類:免費軟體(FreeWare)
內容說明:
Specialized component for parsing and evaluating mathematical expressions specified at runtime. Only 40-80% slower than the equivalent compiled expression.
TParser 元件能夠解析, 轉換數學算式, 執行時期 ( Runtime ) 解析符式的速度僅比編譯時期解析慢 40% 到 80%.
------
~~~Delphi K.Top討論區站長~~~
附加檔案:5138_parser10.zip
|
bugmans
高階會員 發表:95 回覆:322 積分:188 註冊:2003-04-12 發送簡訊給我 |
今天恰巧找到parser10這個元件,安裝後發現還有很多好玩的功能
所以花了一些時間寫個範例給大家看看,雖然原始碼是Delphi但BCB一樣可以安裝 double Result; 1.四則運算 Parser1->Expression="5*3 5*(8 2)"; Result=Parser1->Value;//65 2.預設變數 parser10預設8個變數A,B,C,D,E,X,Y,T指定變數的值後,公式就能使用該變數 Parser1->X=0; Parser1->Expression="cos(X)"; Result=Parser1->Value;//1 //將A,B,C當作常數,觀察在不同X時所得的值 Parser1->Expression="A*X^2 B*X C"; Parser1->A=1; Parser1->B=2; Parser1->C=1; for(int i=1;i<10;i ) {Parser1->X=i; Result=Parser1->Value; //4,9,16,25,36,49,64,81 } 3.自訂變數 若8個預設變數不夠用的話,還可以用SetVariable設更多的變數 Parser1->SetVariable("var1",2); Parser1->SetVariable("var2",3); Parser1->Expression="var1 var2"; Result=Parser1->Value;//5 //呼叫GetVariable取得某個變數的值 double var=Parser1->GetVariable("var1");//2 4.自訂函數 我最欣賞這個功能了,藉由函數指標 (function pointer)的技術, 原程式沒有函數的功能就能靠自己來擴充 void __fastcall func1(POperation AnOperation) {//求一個數的倒數值 double a=*(AnOperation->Arg1); *(AnOperation->Dest)=1/a; } Parser1->AddFunctionOneParam("Inverse",func1); Parser1->Expression="Inverse(X)"; Parser1->X=2; Result=Parser1->Value;//0.5 void __fastcall func2(POperation AnOperation) {//點(x,y)到(0,0)的距離 double a=*(AnOperation->Arg1); double b=*(AnOperation->Arg2); *(AnOperation->Dest)=sqrt(a*a b*b); } Parser1->AddFunctionTwoParam("Distance",func2); Parser1->Expression="Distance(X,Y)"; Parser1->X=3; Parser1->Y=4; Result=Parser1->Value;//5 原問題 http://delphi.ktop.com.tw/board.php?cid=30&fid=70&tid=86384 http://delphi.ktop.com.tw/board.php?cid=31&fid=79&tid=86130 在2002年就有人推薦過了,我到今天才發現這麼好用的元件 http://delphi.ktop.com.tw/board.php?cid=30&fid=69&tid=19775 原本的檔案連結已經失效了,在另外一個地方可以找到 http://delphi.icm.edu.pl/ftp/d10free/parser10.zip |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |