https://www.cnblogs.com/FKdelphi/p/10937225.html
如何在程序中執行動(dòng)態(tài)生成的Delphi代碼
經(jīng)常發(fā)現有人提這類(lèi)問(wèn)題,或者提問(wèn)內容最后歸結成這種問(wèn)題
前些陣子有位高手寫(xiě)了一個(gè)“執行動(dòng)態(tài)生成的代碼”,這是真正的高手,我沒(méi)那種功力,我只會(huì )投機取巧。
這里提供三種方法,都是借助第三方的組件來(lái)實(shí)現的。
1、MicroSoft Windows Script Control(http://www.microsoft.com/downloads/details.aspx?FamilyID=d7e31492-2595-49e6-8c02-1426fec693ac&DisplayLang=en)
這是微軟的東西,OCX的,我對OCX的東西一向沒(méi)什么好感,:)但總算是解決問(wèn)題的一個(gè)方法。
到以上地址下載回來(lái)sct10en.exe,這是個(gè)安裝程序,安裝完成以后,在安裝目錄里有一個(gè)msscript.ocx,就是它了。
在Delphi中Import OCX...導入安裝,在窗體上添加一個(gè)TScriptControl類(lèi)的實(shí)例。
設置好它的Scriptanguage屬性:VBScript,JScript...IE認識的它都認識,沒(méi)有Object Pascal?不要急,好戲總是放在后頭嘛...
以VbScript為例:
運行腳本:ScriptControl1.ExecuteStatement('msgbox("Runing....")');
計算公式:ShowMessage(scriptcontrol1.Eval('1+1'));
優(yōu)點(diǎn):皇家的東西,相信它,沒(méi)錯的
缺點(diǎn):發(fā)布程序帶個(gè)OCX,只能支持微軟的Script
2、Dream Collection中的DCScripter(ftp://202.117.210.28/file/dream4.rar)
安裝好以后在控件面板DreamCompany里面有一個(gè)向右的黑色箭頭,就是它了。
以VbScript為例:
運行腳本:DCScripter1.Script.Add('msgbox("Script Runing...")');
DCScripter1.Run;
計算公式:ShowMessage(DCScripter1.Evaluate('1+1'));
優(yōu)點(diǎn):VCL的,除支持微軟的腳本以外,還支持Perl,Python
缺點(diǎn):還是不支持Object Pascal...(別打,就來(lái)了...)
3、DelphiWebScriptII(http://prdownloads.sourceforge.net/dws/dws2src11.zip)
這個(gè)東西好啊,功能超強,太強了,太強了,真強...
安裝完成以后,將TDelphiWebScriptII,Tdws2GUIFunctions加入窗體,引用dws2Exprs單元。
運行腳本:
var
prg: TProgram;
begin
prg := DelphiWebScriptII1.Compile('ShowMessage(''hi'');');
prg.Execute;
end;
這個(gè)東西是用稍微復雜一點(diǎn),不過(guò)看看Demo吧,接下來(lái)的造化就看你自己的了。
優(yōu)點(diǎn):VCL的,功能超強,支持Object Pascal...
缺點(diǎn):只支持Object Pascal...
以上三個(gè)各有憂(yōu)缺點(diǎn),大家可能比較欣賞DelphiWebScript的功能,但是我覺(jué)得如果是給用戶(hù)使用的話(huà),還是Dream Scripter比較好,畢竟VbScript等比較容易為用戶(hù)所接受。其實(shí)現在很多網(wǎng)管等都很習慣于利用系統提供的COM對象,使用純腳本進(jìn)行編程。很方便的。