• 主页
  • 招聘
  • 语言基础/算法/系统设计
  • 数据库相关
  • 图形处理/多媒体
  • 网络通信/分布式开发
  • VCL组件开发及应用
  • Windows SDK/API

[共享]在程序中执行动态生成的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对象,使用纯脚本进行编程。很方便的。
...全文
43 点赞 收藏 43
写回复
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日
学习,谢谢
回复 点赞
发动态
发帖子
Delphi
创建于2007-08-02

1465

社区成员

26.2w+

社区内容

Delphi 开发及应用
社区公告
暂无公告