比如:
procedure buttonclick(sender:Tobject);
var
do:String;
Begin
do:='showmessage('你好,你是高手')';
// 怎样把'你好,你是高手'这个字符串显示出来end
procedure buttonclick(sender:Tobject);
var
do:String;
Begin
do:='showmessage('你好,你是高手')';
// 怎样把'你好,你是高手'这个字符串显示出来end
2.写一个简单的词法分析器
3.写一个执行器执行语义
这样一个简单的解释器就产生了. :)
2、Dream Collection有一个script组件
3、MS有一个Script Control OCX都可以使用,可以同时支持VBscript,Javascript等语言
call : $E8
xor eax, eax : $33C0
ret : $C3type
PCode = ^TCode;
TCode = packed record
Code: array[0..2] of Byte;
Prc: Pointer;
Ret: Byte;
end;
const
BlockCode: array[0..2] of Byte = ($33,$C0,$E8);
var
Block:PCode;Block:=VirtualAlloc(nil, 7, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
Move(BlockCode, Block^.Code, SizeOf(BlockCode));
Block^.Prc:=Pointer(Longint(@Showmessage) - (Longint(@Block^.Code[2]) + 5));//计算Showmessage的相对地址
Block^.Ret:=$C3;//执行
asm
call Block
end;
//添加ActiveX控件MS Script ControlScriptControl.Language:='VBScript';//也可以是JScript等ScriptControl.ExecuteStatement('MsgBox("你好,你是高手")');//执行脚本
[email protected]强烈关注!
TKS
就是你所要的了 Delphin (pascal interpreter)
Version 1.21
Copyright (c) 1997,1998 S.Kurinny & S.Kostinsky
D2 D3 CPB1 CPB3
-----------------------------------------------------If you want to integrate pascal scripting language into your
application this component is for you.* Can load and execute DFM+PAS files
* Any VCl component/procedure/function can be used in scripts
* Automatical unit import
* Supports subset of Object Pascal language-----------------------------------------------------
e-mail: Sergey Kurinny [email protected]
WWW: http://www.brama.com/dream-co
不能执行是没有加1
VF有如此的功能,是因为它是解释语言。 VF的程序执行时才利用解释器作语法解释。
不仅Delphi,任何编译语言都不可能实现动态组合关键字,请不要再费力气了。
下次我找找..找到的话会发出来共享的..
DelphiWebScript
全部源码,还有例子,和Delphi很般配哟。