博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
fastscript调用delphi方法和DELPHI调用FASTSCRIPT方法
阅读量:6319 次
发布时间:2019-06-22

本文共 1763 字,大约阅读时间需要 5 分钟。

fastscript调用Delphi过程:  

1. 先创建事件处理方法:TfsCallMethodEvent 
2. 然后再用调用TfsScript.AddMethod方法,第一个参数为Delphi方法的语法,第二个参数为TfsCallMethodEvent链接的一个句柄。 如在Delphi有一个过程为DelphiFunc, ….. 
procedure TForm1.DelphiFunc(s: String; i: Integer);  begin  
  ShowMessage(s + ', ' + IntToStr(i));  end;   
{TfsCallMethodEvent} 
function TForm1.CallMethod(Instance: TObject; ClassType: TClass; const MethodName: String;  
  var Params: Variant): Variant;  begin  
 if MethodName = 'DELPHIFUNC' then  //注意方法名称都为大写比较。   DelphiFunc(Params[0], Params[1]);  end;  
procedure TForm1.Button1Click(Sender: TObject); begin 
  { clear all items }   

fsScript1.Clear;   

{ script text } 

  fsScript1.Lines := Memo1.Lines; 

  { frGlobalUnit contains standard types and functions }  

 fsScript1.Parent := fsGlobalUnit; 

  { make DelphiFunc procedure visible to a script }   

fsScript1.AddMethod('procedure DelphiFunc(s: String; i: Integer)', CallMethod);  

  { compile the script }   

if fsScript1.Compile then     

fsScript1.Execute else  

 { execute if compilation was succesfull }    

 ShowMessage(fsScript1.ErrorMsg);

 { show an error message } 

end; 

 

 

DELPHI调用FASTSCRIPT脚本

例如:如果在动态脚本里面有一个'ScriptFunc'的一个过程,则在delphi代码里需要写如下: 

  fsScript1.Clear;   { script text } 
  fsScript1.Lines := Memo1.Lines; 
  { frGlobalUnit contains standard types and functions }   fsScript1.Parent := fsGlobalUnit; 
  { make DelphiFunc procedure visible to a script }  
  { compile the script }   if fsScript1.Compile then 
    { Call script function with one string parameter and one integer param }     fsScript1.CallFunction('ScriptFunc', VarArrayOf(['Call ScriptFunc', 1])) else     ShowMessage(fsScript1.ErrorMsg); { show an error message } end;  
例如动态脚本内容如下: 
procedure ScriptFunc(Msg: String; Num: Integer); begin 
  ShowMessage('1st param: ' + Msg +      '  2nd param: ' + IntToStr(Num)); end;  
begin 
  DelphiFunc('Call DelphiFunc', 1);  end. 

转载地址:http://sjcaa.baihongyu.com/

你可能感兴趣的文章
ERP环境检测工具设计与实现 Environment Detection
查看>>
NuGet学习笔记(2)——使用图形化界面打包自己的类库
查看>>
xcode中没有autoSizing的设置
查看>>
企业应用:应用层查询接口设计
查看>>
nfd指令的详细说明
查看>>
安装VisualSvn Server时遇到的问题
查看>>
人脸识别 开放书籍 下载地址
查看>>
Notepad++配置Python开发环境
查看>>
用户组概念 和 挂载 概念
查看>>
AspNetPager控件的最基本用法
查看>>
sessionKey
查看>>
高性能Javascript--脚本的无阻塞加载策略
查看>>
Java 编程的动态性, 第4部分: 用 Javassist 进行类转换--转载
查看>>
完毕port(CompletionPort)具体解释 - 手把手教你玩转网络编程系列之三
查看>>
iOS8 Push Notifications
查看>>
各大名企笔试及面经大全(程序猿必读)
查看>>
Oracle 连接、会话数的查看,修改
查看>>
Oracle 11g password过期被锁定报道 ORA-28000 the account is locked
查看>>
轨磁条简介
查看>>
大厂前端高频面试问题与答案精选
查看>>