我正在寻找一个好的Delphi免费脚本引擎。我想将脚本添加到应用程序中,以便我可以编写小型测试脚本。具体来说,我需要:Delphi有没有一种很好的脚本Pascal语言?
- 类Pascal语法
- 电流(我看着的RemObjects帕斯卡尔脚本,但它根据一个帖子我看到是“过时”)。
我不需要全面的语言支持,只是基本知识。我看到这个:https://stackoverflow.com/questions/226135/scripting-library-for-delphi,但我假设事情从那时起就有所改变。
我想要做的就是将备忘录组件添加到我的程序中,并在运行时向备忘录添加源片段并单击go按钮。我希望脚本能够访问我的应用程序的变量和函数。
完成此操作的最简单途径是什么?示例程序如下。
program Project31;
uses
Forms,
Unit36 in 'Unit36.pas' {Form36};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm36, Form36);
Application.Run;
end.
。
unit Unit36;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm36 = class(TForm)
Button1: TButton;
Memo1: TMemo;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form36: TForm36;
implementation
{$R *.dfm}
procedure RoutineInMyApplication ;
begin
ShowMessage ('Hello from my Application') ;
end ;
procedure TForm36.Button1Click(Sender: TObject);
begin
//ExecuteScript (Memo1.Lines) ;
end ;
end.
。
object Form36: TForm36
Left = 0
Top = 0
Caption = 'Form36'
ClientHeight = 174
ClientWidth = 391
Color = clBtnFace
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -11
Font.Name = 'Tahoma'
Font.Style = []
OldCreateOrder = False
PixelsPerInch = 96
TextHeight = 13
object Button1: TButton
Left = 300
Top = 72
Width = 75
Height = 25
Caption = 'Button1'
TabOrder = 0
OnClick = Button1Click
end
object Memo1: TMemo
Left = 8
Top = 21
Width = 241
Height = 145
Lines.Strings = (
'begin'
'ShowMessage ('#39'Hello world'#39') ;'
'CallSomehow (RoutineInMyApplication) ;'
'end.'
' ')
TabOrder = 1
end
end
我个人更喜欢PascalScript。缺少对64位Delphi编译器的缺失支持可能是缺点,但是当您使用32位Delphi编译器(支持目前支持Delphi XE2)时,那么您会没事的,我想。 PascalScript目前在纠正错误方面的优先级较低(主要针对64位编译器的问题),但这并不意味着它对32位不稳定。像InnoSetup这样的项目使用它,它仍然活着。经过一个非常快速的搜索,我不认为有相同的校样质量的免费替代品。 – TLama
谢谢@TLama。我已经安装了它的D2006和XE1,但它没有安装任何D10 BPL,ReadMe.html是一个死链接,最后一项changes.txt文件是“对Borland Developer Studio 2006的全新支持”,所以我不是'自信。我会再看看。如果您有时间和已安装的软件,我会很乐意看到如何让示例应用程序运行。 – rossmcm
我不会认真对待['changelog.txt'](https://github.com/remobjects/pascalscript/blob/master/Source/changelog.txt)文件。自上次登录该文件以来,['许多提交'](https://github.com/remobjects/pascalscript/commits/master),所以我会说他们只是停止登录到该文件。 – TLama