易语言里的 “调用子程序”如何在Delphi里实现?

qq_25574441 2017-02-07 12:33:23
易语言里的 “调用子程序”如何在Delphi里实现?

在易的解释:
调用格式: 〈逻辑型〉 调用子程序 (通用型 子程序指针或子程序地址,[通用型 保留参数],[通用型变量 返回值],[通用型 参数],... ) - 特殊功能支持库->附加
英文名称:CallFunction
以stdcall方式(即WINAPI或Pascal)调用指定的子程序(子程序指针,或子程序地址)并取回被调用子程序的返回值,支持任意多个参数,参数支持除字节集之外的其它所有基本数据类型。调用子程序之前,您需要明确地知道它的参数类型和参数个数,以及返回值类型。本命令返回“真”仅表示调用过程中没有出异常情况,并不表示被调用的子程序执行成功。本命令为高级命令。命令参数表中最后一个参数可以被重复添加。
参数<1>的名称为“子程序指针或子程序地址”,类型为“通用型(all)”。提示:在子程序名称前加“&”即可得到该子程序的“子程序指针”,如“&子程序1”就是“子程序1”的子程序指针;子程序地址可通过本库中的“取子程序地址()”命令获取,“到整数(&子程序1)”返回的也是子程序1的执行地址,也可通过Windows系统API函数“GetProcAddress()”获取,或由外部程序传入。
参数<2>的名称为“保留参数”,类型为“通用型(all)”,可以被省略。
参数<3>的名称为“返回值”,类型为“通用型(all)”,可以被省略,提供参数数据时只能提供变量。本参数用于接收子程序被调用后的返回值;如果该子程序没有返回值或不需要接收返回值,请省略本参数。提供本参数时,请务必提供准确的数据类型,否则所得结果可能不正确。
参数<4>的名称为“参数”,类型为“通用型(all)”,可以被省略。本参数值将作为参数传入被调用子程序。如果相应子程序没有参数,请省略本参数;如果相应子程序有多个参数,请重复提供本参数。请务必提供准确的参数类型和参数个数,否则后果不可预知。
...全文
1295 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_25574441 2017-02-07
  • 打赏
  • 举报
回复
通过获取一个过程 或 函数的指针,调用这个命令就可以运行其过程 或 函数! 比如: procedure ceshi; begin Showmessage('运行') end; 调用子程序(@ceshi); 这样方便以后在DLL中运行EXE程序里的函数了!
santiaodahan 2017-02-07
  • 打赏
  • 举报
回复
引用 4 楼 qq_25574441 的回复:
[quote=引用 2 楼 santiaodahan 的回复:] Delphi里调用子程序直接写子程序名。这是想说易语言如何调用Delphi的子程序吧。
不是的,我是这样构思的,EXE把自身子程序的地址指针通过参数传给DLL,DLL直接运行这个地址指针,就是说运行这个子程序[/quote] 就是个回调,Delphi可以实现。
qq_25574441 2017-02-07
  • 打赏
  • 举报
回复
引用 2 楼 santiaodahan 的回复:
Delphi里调用子程序直接写子程序名。这是想说易语言如何调用Delphi的子程序吧。
不是的,我是这样构思的,EXE把自身子程序的地址指针通过参数传给DLL,DLL直接运行这个地址指针,就是说运行这个子程序
qq_25574441 2017-02-07
  • 打赏
  • 举报
回复
不是的,我是这样构思的,EXE把自身子程序的地址指针通过参数传给DLL,DLL直接运行这个地址指针,就是说运行这个子程序
santiaodahan 2017-02-07
  • 打赏
  • 举报
回复
Delphi里调用子程序直接写子程序名。这是想说易语言如何调用Delphi的子程序吧。

1,183

社区成员

发帖
与我相关
我的任务
社区描述
Delphi Windows SDK/API
社区管理员
  • Windows SDK/API社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧