[共享]在程序中执行动态生成的Delphi代码的方法 兼散分

rustle 2003-05-22 12:37:22
如何在程序中执行动态生成的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对象,使用纯脚本进行编程。很方便的。
...全文
87 43 打赏 收藏 转发到动态 举报
写回复
用AI写文章
43 条回复
切换为时间正序
请发表友善的回复…
发表回复
failer 2003-08-04
  • 打赏
  • 举报
回复
收藏
Gide 2003-07-30
  • 打赏
  • 举报
回复
http://expert.csdn.net/Expert/topic/2088/2088473.xml?temp=.5743372
东部一绝 2003-05-24
  • 打赏
  • 举报
回复
你是高手,跟你混了,
我只会做动态生成网页,但必须要给我框架。


————————————————————————————
不是高手,跟我混。▲▲▲▲
寻觅尘封的往事,想念重现。那一段曾经陪你走过的从前,感觉还是没变,我珍惜这份缘。
qwertyasd 2003-05-24
  • 打赏
  • 举报
回复
收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!收分喽!
gjdbf 2003-05-24
  • 打赏
  • 举报
回复
学习!!
novo 2003-05-24
  • 打赏
  • 举报
回复
接分!!
接分!!
接分!!
接分!!
接分!!
接分!!
接分!!
接分!!
接分!!
接分!!
接分!!
接分!!
接分!!
接分!!
接分!!
接分!!
dudunono 2003-05-23
  • 打赏
  • 举报
回复
up
dh9450 2003-05-23
  • 打赏
  • 举报
回复
只要支持Object Pascal我就支持你
shadowfish 2003-05-23
  • 打赏
  • 举报
回复
多谢:)

收藏……
jpyc 2003-05-23
  • 打赏
  • 举报
回复
大善人哪
whose 2003-05-23
  • 打赏
  • 举报
回复
接分快乐!!!
支持大散分!!!
散分兄弟姐妹快快乐乐!!!
whose 2003-05-23
  • 打赏
  • 举报
回复
走过路过不要错过!!!
热心顶帖不是过错!!!
whose 2003-05-23
  • 打赏
  • 举报
回复
大家好才是真的好!!!
接分好的!!!
blueshu 2003-05-22
  • 打赏
  • 举报
回复
接分
要自编译啊
以前看过
MyCrooner 2003-05-22
  • 打赏
  • 举报
回复
学习
rustle 2003-05-22
  • 打赏
  • 举报
回复
以前的那个置顶了好久

刚刚才不见的...
firetoucher 2003-05-22
  • 打赏
  • 举报
回复
以前的那个帖子阿?贴出来看看。
foilsman 2003-05-22
  • 打赏
  • 举报
回复
学习
weitao999 2003-05-22
  • 打赏
  • 举报
回复
gz
cow8063 2003-05-22
  • 打赏
  • 举报
回复
学习,谢谢
加载更多回复(23)

5,930

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧