全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1240
推到 Plurk!
推到 Facebook!

可處理中文Script的元件(含原始碼)

 
speedup
資深會員


發表:19
回覆:259
積分:280
註冊:2003-07-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-09-01 00:25:27 IP:218.168.xxx.xxx 未訂閱
可處理中文Script的元件(含原始碼) 範例畫面/程式請參考http://delphi.ktop.com.tw/topic.php?TOPIC_ID=43340
[元件用途]
    基本上,可用於處理中文Script(程序式語言)或計算公式、測試演算法(可處理遞回)等,
也可任意變換調整語法中的語法符號、保留字、等等,自行設計出更具中文味的程式語言,
在Script的語法結構上可中英文交叉混用(eg. Begin ... End/開始 ... 結束/開始 ... End),
所有提供的函數程序都同時具備中文和英文寫法(eg. Showmessage()/顯示訊息()),當然也可
自行定義適當的中文別名增加Script的辨識能力。
    
    不過,本元件採用Interpreter架構設計,因此執行Script時不需先行Compile但也因此,若
Script內容含迴圈或遞回程式碼的話,在執行效率上會比不上Compile架構的Script Engine    [程式語法]
  我在設計本Script元件,主要是參考Pascal Grammar修改而來,目前支援程度概述如下
  定義函數 ->定義函數(Function) 
  定義程序 ->定義程序(Procedure)
  定義變數 ->定義變數(Var)
  條件判斷 -> 若 則 否則(if then else)
  迴圈 -> 從 遞增到/遞減到 做(for to/downto do)
       -> 成立條件  做 (while do)
       -> 重複 直到(Repeat Until)
  完整的數學及邏輯計算式 和 陳述(Expression/Statement)
  
  另外,不支援自訂型態和型態檢查(換句話說Script本身在解譯過程中會自動做型態轉換)
  
[元件用法簡易說明]
1.Install
 如用Delphi 7 請直接開啟spTools.dpk後 Complie後Install即可
 Delphi 6 應該一樣 
 Delphi 5 或 4(忘了!要稍微修改Source Code中的uses 區段,把variants拿掉)
 安裝後會在spTools頁次出現兩個元件
 
2.Components
 TopInterpreter 用來處裡中文Script的元件
 TopStdFuns  標準函數處理元件TopInterpreter透過本元件來處理函數,如要擴充元件的處理函數
             請自行繼承本元件
 
 TopInterpreter 重要屬性
   Source:TStrings 
   用來指定Script程式碼
   
   CompleteBooleanEval:Boolean 
   是否要完全計算完整個邏輯運算式(一般程式語言預設值皆為False)
   
   AutoCreateVariabe:boolean 
   是否要自動建立變數,若是則當在處理Script碰到未事先宣告或用程式碼
   事先加入的變數則自動建立(預設值為False)
   
   SupportFuncs :TopStdFuns 
   用來指定處理函數的元件
      
   Variables[VarName:String]:OleVariant 
   用來存取變數   
   
   ErrorMessage:String 
   紀錄解譯過程發生的錯誤訊息   
   
 TopInterpreter 重要方法 
   
   procedure AddVariable(VarName,VarAlias:String;Value:OleVariant;comment:string='');
   加入變數(變數名稱,變數別名,變數值)
    
   procedure RemoveVariable(VarName:String);
   移除變數(變數名稱)
    
   procedure ClearVariables;
   清除全部變數
    
   procedure ClearScriptDefine;
   清除執行Script後(即執行SyntaxCheck或Run之後)所建立的Functions/Variables       function EvalExpression:Variant;
   直接求公式值(此時Script只能含即指定敘述:= 右邊的計算式)
    
   function SyntaxCheck:boolean;
   檢查Script語法是否正確不會出現執行期錯誤(比方說變數未設定初值導致除0),
   若執行成功則傳回Ture,否則請自行參考ErrorMessage的錯誤訊息
    
   function Run:boolean;
   執行Script語法,若執行成功則傳回Ture,否則請自行參考ErrorMessage的錯誤訊息       procedure MarkDifferentTokens(Re:TRichEdit;AllRange:Boolean=False);
   標示不同類型的語法元素,請參考InterpreterDemo
      
   procedure CreateGrammarDictionary(GD:TTreeView);
   自動建立語法字典,請參考InterpreterDemo
   
請自行參考範例,懶的打了
發表人 - speedup 於 2004/09/01 00:49:34
------
唉~
附加檔案:55724_spTools.rar
lau_ireton
一般會員


發表:0
回覆:1
積分:0
註冊:2003-11-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-09-12 09:00:33 IP:218.16.xxx.xxx 未訂閱
缺少opunit.pas
speedup
資深會員


發表:19
回覆:259
積分:280
註冊:2003-07-04

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-09-13 09:10:44 IP:218.168.xxx.xxx 未訂閱
引言: 缺少opunit.pas
謝謝您的告知 我已經重新上傳並補上opUtils 混心雜欲 棄修身~唉
------
唉~
系統時間:2024-04-29 6:14:50
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!