【问题标题】:How to Execute External or Dynamic Code in Pascal (FPC/Lazarus)如何在 Pascal (FPC/Lazarus) 中执行外部或动态代码
【发布时间】:2018-01-09 00:55:01
【问题描述】:

首先,我来自 Visual FoxPro 9.0。

我在 VFP 上制作的所有应用程序都可以执行来自任何事件(按钮、网格、表单等)的动态代码。

例子:

lcFile = "c:\test\myDynamicCode.txt"
=EXECSCRIPT(FILETOSTR(lcFile))

是否可以在 Pascal 上执行?

谢谢...!

【问题讨论】:

  • 谷歌 Pascal 脚本
  • 文件里有什么?

标签: lazarus freepascal


【解决方案1】:

Lazarus 的默认安装带有一组总标题为“Pascal 脚本”的组件,可用于实现脚本引擎和调试器 - 请参阅

http://wiki.freepascal.org/Category:Pascal_Script

http://wiki.freepascal.org/Pascal_Script_Examples

脚本引擎可以编译(字节码)并执行用Object Pascal方言编写的脚本,该方言接近但不等同于Delphi实现的Object Pascal。该软件包附带了围绕许多提供的 Lazarus/FPC 单元的代码包装器,这些单元实现了旨在等效于许多 Delphi 组件的组件。

简而言之,您应该发现您可以使用 Pascal 脚本来编写和动态执行 Object Pascal 代码,这与您可以在 FPC 中编写和编译的大部分代码相同。正如您将从第二个链接中的代码示例中收集到的那样,Pascal 脚本引擎允许您添加在您自己的 Lazarus/FPC 代码中定义的自定义函数,并使您的表单和类可由 Pascal 脚本脚本访问和编写脚本。

如果您需要脚本引擎来实现另一种语言,可以使用第三方库来帮助您解决此问题。大多数是为 Delphi 编写的,但应该很容易转换为 FPC + Lazarus。例子包括

TP Lex/Yacc:http://www.musikwissenschaft.uni-mainz.de/~ag/tply/

Delphi 编译器生成器:http://www.soft-gems.net/index.php/tools/delphi-compiler-generator

所以,简而言之,如果你想做的事情可以用 Lazarus/FPC 代码来表达,那么它很有可能可以用 Pascal 脚本代码来执行。如果您需要另一种脚本语言的引擎,TP Lex/Yacc 和 DCG 将允许您编写自己的脚本语言,但请注意,这将比使用 Pascal 脚本组件多很多工作.

顺便说一句,我不知道你是否对 Linux 感兴趣,但是 Lazarus/FPC 的 Linux 版本也带有 Pascal 脚本组件。

【讨论】:

  • 这有帮助吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-18
  • 2014-11-21
  • 2023-04-10
相关资源
最近更新 更多