======================================================
注:本文源代码点此下载
======================================================
如何在程序中执行动态生成的delphi代码
经常发现有人提这类问题,或者提问内容最后归结成这种问题
前些阵子有位高手写了一个“执行动态生成的代码”,这是真正的高手,我没那种功力,我只会投机取巧。
这里提供三种方法,都是借助第三方的组件来实现的。
1、microsoft windows script control(http://www.microsoft.com/downloads/details.aspx?familyid=d7e31492-2595-49e6-8c02-1426fec693ac&displaylang=en)
这是微软的东西,ocx的,我对ocx的东西一向没什么好感,:)但总算是解决问题的一个方法。
到以上地址下载回来sct10en.exe,这是个安装程序,安装完成以后,在安装目录里有一个msscript.ocx,就是它了。
在delphi中import ocx...导入安装,在窗体上添加一个tscriptcontrol类的实例。
设置好它的scriptanguage属性:vbscript,jscript...ie认识的它都认识,没有object pascal?不要急,好戏总是放在后头嘛...
以vbscript为例:
运行脚本:scriptcontrol1.executestatement('msgbox("runing....")');
计算公式:showmessage(scriptcontrol1.eval('1+1'));
优点:皇家的东西,相信它,没错的
缺点:发布程序带个ocx,只能支持微软的script
2、dream collection中的dcscripter(ftp://202.117.210.28/file/dream4.rar)
安装好以后在控件面板dreamcompany里面有一个向右的黑色箭头,就是它了。
以vbscript为例:
运行脚本:dcscripter1.script.add('msgbox("script runing...")');
dcscripter1.run;
计算公式:showmessage(dcscripter1.evaluate('1+1'));
优点:vcl的,除支持微软的脚本以外,还支持perl,python
缺点:还是不支持object pascal...(别打,就来了...)
3、delphiwebscriptii(http://prdownloads.sourceforge.net/dws/dws2src11.zip)
这个东西好啊,功能超强,太强了,太强了,真强...
安装完成以后,将tdelphiwebscriptii,tdws2guifunctions加入窗体,引用dws2exprs单元。
运行脚本:
var
prg: tprogram;
begin
prg := delphiwebscriptii1.compile('showmessage(''hi'');');
prg.execute;
end;
这个东西是用稍微复杂一点,不过看看demo吧,接下来的造化就看你自己的了。
优点:vcl的,功能超强,支持object pascal...
缺点:只支持object pascal...
以上三个各有忧缺点,大家可能比较欣赏delphiwebscript的功能,但是我觉得如果是给用户使用的话,还是dream scripter比较好,毕竟vbscript等比较容易为用户所接受。其实现在很多网管等都很习惯于利用系统提供的com对象,使用纯脚本进行编程。很方便的。
======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/