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

时间:2018-01-09 00:55:01

标签: lazarus freepascal

首先,我来自Visual FoxPro 9.0。

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

示例:

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

是否可以在Pascal上执行它?

谢谢...!

1 个答案:

答案 0 :(得分:4)

Lazarus的默认安装包含一般标题下的一组组件" Pascal Script"可用于实现脚本引擎和调试器 - 请参阅

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脚本脚本访问和编写脚本。 / p>

如果您需要脚本引擎来实现其他语言,可以使用第三方库来协助解决此问题。大多数是为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脚本组件。