如何在 Pascal 中执行外部或动态代码 (FPC/Lazarus)

How to Execute External or Dynamic Code in Pascal (FPC/Lazarus)

首先,我来自 Visual FoxPro 9.0。

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

示例:

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

是否可以在 Pascal 上执行?

谢谢...!

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

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

http://wiki.freepascal.org/Pascal_Script_Examples

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

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

如果您需要脚本引擎来实现另一种语言,可以使用第 3 方库来协助完成此操作。大多数是为 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 Script 代码执行。如果您需要另一种脚本语言的引擎,TP Lex/Yacc 和 DCG 将允许您编写自己的脚本语言,但请注意,这将比 使用 Pascal 脚本组件。

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