请选择 进入手机版 | 继续访问电脑版

Lazarus中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

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

关于脚本语言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 为中文编程

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

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, 2022-1-21 01:08 , Processed in 0.041456 second(s), 27 queries .

Powered by Discuz! F1.0 Build 20160930

© 2001-2022 Comsenz Inc. & Discuz! Fans

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