相关资料:https://www.cnblogs.com/linyawen/archive/2011/10/01/2196950.html

如何在程序中执行动态生成的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对象,使用纯脚本进行编程。很方便的。

执行动态的delphi脚本的更多相关文章

  1. Delphi 如何在程序中执行动态生成的Delphi代码

    如何在程序中执行动态生成的Delphi代码 经常发现有人提这类问题,或者提问内容最后归结成这种问题 前些阵子有位高手写了一个“执行动态生成的代码”,这是真正的高手,我没那种功力,我只会投机取巧. 这里 ...

  2. 如何在程序中执行动态生成的Delphi代码

    如何在程序中执行动态生成的Delphi代码 经常发现有人提这类问题,或者提问内容最后归结成这种问题 前些阵子有位高手写了一个“执行动态生成的代码”,这是真正的高手,我没那种功力,我只会投机取巧. 这里 ...

  3. JS 动态加载脚本 执行回调

    JS 动态加载脚本  执行回调 关于在javascript里面加载其它的js文件的问题可能很多人都遇到过,但很多朋友可能并不知道怎么判断我们要加载的js文件是否加载完成,如果没有加载完成我们就调用文件 ...

  4. 动态编译c#脚本(把c#当作脚本执行)

    csscript动态编译C#脚本 This document contains information about the CLR based scripting system CS-Script ( ...

  5. js动态加载脚本

    最近公司的前端地图产品需要做一下模块划分,希望用户用到哪一块的功能再加载哪一块的模块,这样可以提高用户体验. 所以到处查资料研究js动态脚本的加载,不过真让人伤心啊!,网上几乎都是同一篇文章,4种方法 ...

  6. Java下拼接执行动态SQL语句(转)

    在实际业务中经常需要拼接动态SQL来完成复杂数据计算,网上各类技术论坛都有讨论,比如下面这些问题: http://bbs.csdn.net/topics/390876591 http://bbs.cs ...

  7. 第一百一十八节,JavaScript,动态加载脚本和样式

    JavaScript,动态加载脚本和样式 一动态脚本 当网站需求变大,脚本的需求也逐步变大.我们就不得不引入太多的JS脚本而降低了整站的性能,所以就出现了动态脚本的概念,在适时的时候加载相应的脚本. ...

  8. winform WebBrowser控件中,cs后台代码执行动态生成的js

    很多文章都是好介绍C# 后台cs和js如何交互,cs调用js方法(js方法必须是页面上存在的,已经定义好的),js调用cs方法, 但如果想用cs里面执行动态生成的js代码,如何实现呢? 思路大致是这样 ...

  9. js实现动态加载脚本的方法实例汇总

      本文实例讲述了js实现动态加载脚本的方法.分享给大家供大家参考,具体如下: 最近公司的前端地图产品需要做一下模块划分,希望用户用到哪一块的功能再加载哪一块的模块,这样可以提高用户体验. 所以到处查 ...

随机推荐

  1. openssl/ssl.h file not found

    sample/le-proxy.c:33:10: fatal error: 'openssl/ssl.h' file not found mac下,在安装某些软件的时候提示如上错误,但是mac已经安装 ...

  2. hive 导入csv文件

    创建hive表: create table table_name( id string, name string, age string ) row format serde 'org.apache. ...

  3. 2017.4.18 静态代码分析工具sonarqube+sonar-runner的安装配置及使用

    配置成功后的代码分析页面: 可以看到对复杂度.语法使用.重复度等等都做了分析,具体到了每一个方法和每一句代码. 四种使用方式: sonarqube + sonar-runner sonarqube + ...

  4. EffectiveJava(5)避免创建不必要的对象

    避免创建不必要的对象 1.通过延迟初始化对象提高性能 调用功能方法时调用静态工厂方法,而不是调用类时使用 2.适配器:把功能委托给一个后备对象,从而为后备对象提供一个接口的对象 3.自动装箱:优先使用 ...

  5. Json,String,Map之间的转换

    前提是String的格式是map或json类型的 String 转Json JSONObject  jasonObject = JSONObject.fromObject(str); String 转 ...

  6. 百度兴趣点下载V1.4版

    好东西就是不断的更改,升级出来的,经过连续四个版本的升级,本次版本受到用户的一致好评,也拿来在这里做个分享,期望对更多地用户起到一定的帮助! 还是一样,介绍一下其功能: 1.全国范围内的兴趣点任意区域 ...

  7. OkHttpClient简单封装

    一.接口 public interface HttpListener { void onFinish(String reponse); void onError(Exception e); } 二.O ...

  8. 扩充STL-编写自己的迭代器

    这里的迭代器能够与STL组件共同工作,是对STL的一种扩充.   自定义迭代器必须提供iterator_traits的五种特性,分别是迭代器类型.元素类型.距离类型.指针类型与reference类型. ...

  9. Nginx:管理HTTP模块的配置项

    参考资料<深入理解Nginx> 一个nginx.conf的例子 http { mytest_num ; server { server_name A; listen ; mytest_nu ...

  10. session的两个小案例

    学完了session,写两个小案例加深一下对session的巩固. 1. 用户登陆案例 登陆html页面提交后,将参数带给处理登陆的servlet,该servlet将获得登陆的用户名和密码,并将这些信 ...