知识大全 Delphi中ScriptControl的高级应用
Posted 知
篇首语:忘掉失败,不过要牢记失败中的教训。。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Delphi中ScriptControl的高级应用相关的知识,希望对你有一定的参考价值。
Delphi中ScriptControl的高级应用 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
在我们的Windows系统里提供了一个叫ScriptControl的OCX组件 我们可以用这个组件来实现脚本故事世界的精彩 创建ScriptControl组件服务 首先 我们来看一下该组件都有哪些方法和属性 如图 图 图 接着 我们用Delphi创建组件服务 从图 可知 该组件的ProgID为 MSScriptControl ScriptControl 所以我们可以这样创建组件 Var sc : OleVariant; begin sc := CreateOleObject( MSScriptControl ScriptControl ); //使用Language属性来设定该组件所使用的语?? //语言可以为 VbScript JavaScript(也可缩写为JScript) //相当于在HTML里用的Delphi中使用JavaScript的Base 的加解密算法 搜索google javascript base 加密 就会找到很多base 加密的代码 以下就是本人搜索到的一段代码(以下代码版权归其原作者) var base EncodeChars = ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz +/ var base DecodeChars = new Array( ) function base encode(str) var out i len var c c c len = str length i = out = while(i < len) c = str charCodeAt(i++) & xff if(i == len) out += base EncodeChars charAt(c >> ) out += base EncodeChars charAt((c & x ) < < ) out += == break c = str charCodeAt(i++) if(i == len) out += base EncodeChars charAt(c >> ) out += base EncodeChars charAt(((c & x )< < ) | ((c & xF ) >> )) out += base EncodeChars charAt((c & xF) < < ) out += = break c = str charCodeAt(i++) out += base EncodeChars charAt(c >> ) out += base EncodeChars charAt(((c & x )< < ) | ((c & xF ) >> )) out += base EncodeChars charAt(((c & xF) < < ) | ((c & xC ) >> )) out += base EncodeChars charAt(c & x F) return out function base decode(str) var c c c c var i len out len = str length i = out = while(i < len) /* c */ do c = base DecodeChars[str charCodeAt(i++) & xff] while(i < len && c == ) if(c == ) break /* c */ do c = base DecodeChars[str charCodeAt(i++) & xff] while(i < len && c == ) if(c == ) break out += String fromCharCode((c < < ) | ((c & x ) >> )) /* c */ do c = str charCodeAt(i++) & xff if(c == ) return out c = base DecodeChars[c ] while(i < len && c == ) if(c == ) break out += String fromCharCode(((c & XF) < < ) | ((c & x C) >> )) /* c */ do c = str charCodeAt(i++) & xff if(c == ) return out c = base DecodeChars[c ] while(i < len && c == ) if(c == ) break out += String fromCharCode(((c & x ) < < ) | c ) return out function utf to (str) var out i len c out = len = str length for(i = i < len i++) c = str charCodeAt(i) if ((c >= x ) && (c < = x F)) out += str charAt(i) else if (c > x FF) out += String fromCharCode( xE | ((c >> ) & x F)) out += String fromCharCode( x | ((c >> ) & x F)) out += String fromCharCode( x | ((c >> ) & x F)) else out += String fromCharCode( xC | ((c >> ) & x F)) out += String fromCharCode( x | ((c >> ) & x F)) return out function utf to (str) var out i len c var char char out = len = str length i = while(i < len) c = str charCodeAt(i++) switch(c >> ) case case case case case case case case // xxxxxxx out += str charAt(i ) break case case // x xxxx xx xxxx char = str charCodeAt(i++) out += String fromCharCode(((c & x F) < < ) | (char & x F)) break case // xxxx xx xxxx xx xxxx char = str charCodeAt(i++) char = str charCodeAt(i++) out += String fromCharCode(((c & x F) < < ) | ((char & x F) < < ) | ((char & x F) < < )) break return out 这么长的一段代码 我们怎样才能以AddCode()的方法加入进去呢? ) 第一种方法 把这么长的代码定义给一个字符串 这个工作量肯定非常大 而且容易出错 ) 第二种方法 把它定义到一个记事本里 程序运行的时候读入 安全性很低 容易被人修改 导致出错 ) 第三种方法 把它以资源文件的形式存放在一个Dll里 这种方法比较适合 以下我们就用这种方法来处理 生成DLL的步骤 ) 新建一个记事本 粘贴上面的代码 最后保存为Base txt ) 新建一个记事本 写上以下代码 最后保存为 Base rc Base File exefile Base txt ) 同目录下新建一个批处理文件 保存为Base bat Brcc exe Base rc ) 编译成资源文件Res 双击执行Base bat 完后会生成一个Base res的文件 这个就是JavaScript脚本的资源文件 ) 新建一个DLL 保存为Base dpr 加上以下代码 然后编译成Base dll library Base $R Base RES begin end 这样 我们的资源文件打包成dll就完成了! 下面 我们的工作就是通过dll来读取JavaScript代码 读取资源文件到一个String变量 Function ReadResourc() String Var Hinst Thandle Stream TResourceStream CodeString TStrings begin Result = //加载dll Hinst =Loadlibrary( Base dll ) If Hinst= Then Exit Try //读取资源文件 Stream =TResourceStream Create(Hinst Base File exefile ) CodeString = TStringList Create() Try //将资源文件存放到列 cha138/Article/program/Delphi/201311/24677
相关参考
Delphi初学者应小心的六大陷阱 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! &nb
目前水质污染的主要矛盾已从耗氧物质和生物污染转化为化学物质污染,因此美国国家研究委员会(NRC)在制定21世纪优先研究领域时把《环境中的化学品》列为今后20年应加以资助的六个重点领域之一。我国从200
目前水质污染的主要矛盾已从耗氧物质和生物污染转化为化学物质污染,因此美国国家研究委员会(NRC)在制定21世纪优先研究领域时把《环境中的化学品》列为今后20年应加以资助的六个重点领域之一。我国从200
目前水质污染的主要矛盾已从耗氧物质和生物污染转化为化学物质污染,因此美国国家研究委员会(NRC)在制定21世纪优先研究领域时把《环境中的化学品》列为今后20年应加以资助的六个重点领域之一。我国从200
我顺利地通过了考官对我的初试,然后被通知进行复试,复试时考官中增加了两位来自总部的高级负责人。而半途中冒出的那句没头没脑的评论,我至今仍难以忘却。 一位高级负责人说:“你真的不错,问题也回答
Delphi学堂之在Delphi中自己建立交叉表 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!fu
Delphi中对象解除技巧 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 在Delphi程序设计
DELPHI中使用API函数的方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! DELPHI的
Delphi中使用纯正的面向对象方法 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!Delphi的V
Delphi字符串列表及应用(一) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! Delphi应