问题标签 [pascalscript]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
installation - Inno Setup 中的函数指针
Inno Setup 是否支持函数指针?我在文档中找不到任何内容。我知道 Delphi/Pascal 支持它们,并且 Inno Setup 脚本引擎基于它,我希望它得到支持。
delphi - 跳出块时是否有一种安全的方法来清理基于堆栈的代码?
我一直在研究PascalScript 脚本引擎的第 14 期,其中使用 Goto 命令跳出 Case 块会产生编译器错误,即使这是完全有效(如果丑陋)的 Object Pascal 代码。
结果编译器中的 ProcessCase 例程调用 HasInvalidJumps,它会扫描任何在 Case 块之外的 Goto,如果找到,则会给出编译器错误。如果我评论检查,它编译得很好,但最终在运行时崩溃。字节码的反汇编说明了原因。我已经用原始脚本代码对其进行了注释:
“转到 L1;” 103 处的语句跳过了 113 和 114 处的清理弹出,这使堆栈处于无效状态。
Delphi 对此没有任何问题,因为它不使用计算堆栈。然而,PascalScript 就没有那么幸运了。我需要一些方法来完成这项工作,因为这种模式在一些来自更简单系统的遗留脚本中非常常见,而我已经翻译成 PascalScript 并且需要能够支持的控制结构的方式很少。
任何人都知道如何修补 codegen 以便正确清理堆栈?
delphi - 使用 Pascal 脚本和 SynEdit 制作 IDE
我正在使用 RemObjects(优秀)的 PascalScript 和 SynEdit 编辑器创建一个内置脚本引擎。使用 PascalScript 附带的 IDE 示例和 SynEdit 中的 IDE 示例几乎完成了 - 但是 - 我看不到如何询问 PascalScript 编号的源代码行是否“可执行”。(然后我可以使用它用“Delphi 蓝点”标记 SynEdit 排水沟)。我想我可能需要对 ROPS 输出进行反汇编?
这里有 PascalScript 专家吗?谢谢。布赖恩。
hyperlink - 如何在 Inno Setup 中显示超链接?
我正在我的 Inno Setup 安装程序中进行验证,以检查机器上是否安装了 Microsoft 更新,如果没有,我将显示一个简单的消息框,告诉用户需要更新,这是消息代码:
我想让 URL 成为网页的超链接,但我无法弄清楚如何在 Inno Setup 中将文本添加为超链接?
谢谢。
delphi - 导入自定义类时,如何让 Pascal 脚本识别“创建”和“免费”功能?
我对本文中的示例有疑问。本文解释了如何导入您自己的类,以便可以从 Pascal 脚本中调用它们。我正在导入我的自定义类,但无法让 Pascal 脚本识别“创建”和“免费”功能。
我的插件:
我的应用程序:
我的脚本:
错误信息:
delphi - 没有单元导入器的 Pascal 脚本
似乎 UnitImport 程序可能以某种方式进入 cajScript/PascalScript 的开发,它可能隐藏了一些有助于理解如何实现 PascalScript 应用程序的细节。假设是这种情况,或者您想在不使用导入器的情况下编写 PascalScript 应用程序,您将如何将这样的类合并到您的脚本环境中?:
我希望整理一些关于使用 PascalScript 的基本说明,这些说明可能会填补两个说明文档和新闻组留下的一些空白。
谢谢你的帮助。
installation - InnoSetup:在 [Code] 部分获取 AppName
我正在使用InnoSetup[Code]
创建一个安装程序,并在一个部分中编写一些自定义处理程序。在其中一个处理程序中,我希望能够检索该部分AppName
中定义的(或可能是其他参数的值)的值[Setup]
。我有办法做到这一点吗?我查看了文档,但我没有找到任何可以让我这样做的东西。我们的 InnoSetup 文件实际上是由我们的构建过程生成的,它将我们所有程序之间共有的片段和特定于程序的片段拼接在一起,因此必须在代码中为每个程序定义常量会很不方便。有没有方便的方法来做到这一点?
我正在寻找类似的东西
except{AppName}
不是一个定义的常量。有什么方法可以查询该[Setup]
部分中定义的参数吗?
inno-setup - Inno Setup 脚本中的基本电子邮件验证
我想在 Inno Setup 脚本中进行基本的字符串验证,以相对确定该字符串是一个电子邮件地址。我只是想看看有一个'@'字符后跟一个'。' 字符,并且在这些字符的任一侧至少有一个字符。类似于这个正则表达式的东西:
object pascal 中缺少正则表达式和有限的字符串函数让我很伤心。反转字符串很简单,找到第一个'。' 和 '@' 然后进行一些比较,但是没有可用的 Reverse(string) 函数。
我知道我可以从我编写的帮助 DLL 中调用导出的函数,但我希望避免这种解决方案。
还有其他建议吗?
delphi - 为什么我不能用 PascalScript 编译器注册这个方法?
我的问题如下。
这是我的设置:
当我尝试编译任何脚本时,为什么会出现以下错误。
我知道这与我尝试将 NewItem 方法导入 PS 编译器有关,但我不知道它为什么不接受 TStringList。我知道它是 TStringList 因为如果我取出 TStringList 参数并仅使用具有以下签名的方法,那么一切正常。
我找不到任何引用说我不能在编译器/脚本和我的 Delphi 代码之间来回传递对象,但我开始认为在做这类事情时可能存在限制。
尝试传递字符串数组而不是 TStringList 是否更有意义?