Lazarus中文社区

 找回密码
 立即注册(注册审核可向QQ群索取)

QQ登录

只需一步,快速开始

Lazarus IDE and 组件 下载地址版权申明
查看: 3243|回复: 15

关于脚本语言PascalScript学习与讨论

[复制链接]

该用户从未签到

发表于 2021-12-16 17:04:07 | 显示全部楼层 |阅读模式
Pascal Script 的特点:
1.其变量都是强类型的
2.编译和执行是分开的
这和Java一样先编译成机器(中间)语言,然后执行二进制文件。

Pascal Script 的优点:
1.编译速度快,运行速度快。
2.编译结果可以跨平台运行。
3.引擎可嵌入程序,可制成虚拟机。
4.与其他程序交互融合比较友好。

Pascal Script 的缺点:
1.bug比较多,且TPSScript的封装并不是很好
2.脚本不支持Pointer,不支持函数名称override
3.缺乏帮助文档,学习曲线陡峭。


参考
https://wiki.freepascal.org/Pascal_Script_Examples
https://github.com/remobjects/pa ... jects-Pascal-Script
https://www.pinvoke.net/default.aspx
回复

使用道具 举报

该用户从未签到

 楼主| 发表于 2022-1-4 15:33:12 | 显示全部楼层

RE: 关于脚本语言PascalScript学习与讨论

PascalScript也不是傻傻的直接运行脚本程序,其实也可以调用脚本中的函数,或Instance。。。就像类似调用Dll
这样做的优势在哪里呢,比如你有一个算工资程序,各种if-else 月月都有变化,上脚本!你甚至也可以替换 IF ELSE BEGIN END 为中文编程

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册(注册审核可向QQ群索取)

x
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2022-1-4 16:19:09 | 显示全部楼层

RE: 关于脚本语言PascalScript学习与讨论

本帖最后由 kwer 于 2022-1-4 16:25 编辑

《关于PascalScript Event 程序在X64CPU上面不能触发问题的解决方案》
因为所有的事件程序参数传递是通过 uPSRuntime单元的MyAllMethodsHandler程序完成
大量使用了汇编魔法,作者只完成了x86部分,$ifdef CPUX64 部分是空着的(未完成)。
网上也没有解决方案(懂汇编人的太少),但还是可以绕开MyAllMethodsHandler来完成。

// Button.OnClick := @BtnClick;  // 原来是这样做
LinkEventMethod(Button, 'OnClick', 'BtnClick'); // 改为Host程序处理


---- Host  Processing ----
procedure LinkEventMethod(Instance, AEvent, ScriptMethod);
begin
  ProcNo := Executor.GetProc(ScriptMethod);  ...
  Button.OnClick := @InvokeOnClick;  // 脚本程序触发InvokeOnClick
end

procedure InvokeOnClick(Sender: TObject)
begin   ...
  Executor.RunProc(PramList, ProcNo);
end.



回复 支持 反对

使用道具 举报

*滑块验证:

本版积分规则

QQ|手机版|小黑屋|Lazarus中国|Lazarus中文社区 ( 鄂ICP备16006501号-1 )

GMT+8, 2024-10-22 17:46 , Processed in 0.030501 second(s), 13 queries , Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表