2012-09-10 23 views
13

私はDelphiのための良い無料のスクリプトエンジンを探しています。小さなテストスクリプトを書くことができるように、アプリケーションにスクリプトを追加したい。具体的に私が必要:デルファイのためのよいスクリプト言語のパスカルのような言語はありますか?

  • パスカルのような構文
  • 電流(Iは、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 
+1

私は個人的にはPascalScriptを好みます。 64ビットのDelphiコンパイラのサポートが欠けているのは弱点かもしれませんが、32ビットのDelphiコンパイラを使用している場合(現在はDelphi XE2までサポートされています)、うまくいくと思います。 PascalScriptは現在、バグ修正(主に64ビットコンパイラで見つかった問題)の優先順位は低いですが、32ビットでは安定していないわけではありません。 InnoSetupのようなプロジェクトはそれを使用し、それはまだ生きています。非常に迅速な検索の後、私は同じ証明された品質で無料の代替品はないと思います。 – TLama

+0

ありがとう@TLama。私はD2006とXE1用にインストールしましたが、D10 BPLはインストールされませんでした.ReadMe.htmlはデッドリンクでした。最後のエントリchanges.txtファイルは「新しいBorland Developer Studio 2006サポート」でしたので、確信しています。もう一度見ます。時間があり、ソフトウェアがインストールされていれば、サンプルアプリケーションの実行に何が関与するのかを知ることに興味があります。 – rossmcm

+2

私はその['changelog.txt'](https://github.com/remobjects/pascalscript/blob/master/Source/changelog.txt)ファイルをあまりにも真剣に受け止めません。最後にそのファイルにログインしてから[多くのコミット](https://github.com/remobjects/pascalscript/commits/master)があったので、そのファイルにログインするのをやめただけです。 – TLama

答えて

14

は現在Eric Grangeによって維持されているdwscriptライブラリを試してみてください。

+0

ありがとう@RRUZも参照してください。それがPascalScriptとどのように比較されるかに関するコメント? – rossmcm

+1

1. dwscriptはDelphiの構文をサポートしており、言語に非常に素晴らしい拡張を追加しています2. [積極的に維持されています](http://code.google.com/p/dwscript/source/list)3.)良い[documentationサンプル](http://code.google.com/p/dwscript/w/list)4.拡張ユニットテストセットを用意しました。 – RRUZ

+0

私はこれを見つけました:http://stackoverflow.com/questions/4889810/what-are-the-pros-and-cons-of-remobjects-pascalscript-versus-the-dws-scriptこれはかなり役に立ちました。私は間違いなくそれを試してみましょう。 – rossmcm

4

Jedi JVCLには、非常に軽量(小)のインタープリタですが、dwscriptよりもはるかに機能が制限されたTJvInterpreterも含まれています。

非常に小さい(ユーザーが入力した数式または単純な文字列と数値処理のタスク)JvInterpreterは、私にとって非常にうまく機能しています。

+0

あなたのアプリケーションでルーチンとアクセス変数を呼び出すことは可能ですか? – rossmcm

+0

コードを少し書く必要がありますが、可能です。 Delphiの最新バージョンでは、RTTIとメソッドの呼び出しがずっとインテリジェントにできるようになりました。しかし、呼び出し可能にしたいユニットごとにいくつかのコードが必要です。私は実際にアクセス可能なラッパーコントロールを持っているのが好きです。私のスクリプトがアプリをクラッシュさせるのが難しくなります。 –

+0

ありがとう@Warren。私は「Hello World」アプリを試してみましたが、それがいかに簡単に進んでいたかに感銘を受けました.Delphiのようなエディタも含めています。ここにはいくつかのドキュメンテーション(http://jvcl.delphi-jedi.org/JvInterpreter.htm)がありますが、他の方向に進む例(スクリプトからアプリケーション変数にアクセスする方法)ではほとんどありません。 _real_ JVCLヘルプがありますか? http://wiki.delphi-jedi.org/wiki/JEDI_Visual_Component_Libraryにあるほとんどのものは空で、[JvInterpreter](http://jvcl.delphi-jedi.org/JvInterpreter.htm)は歓迎の例外です。 – rossmcm

0

FastReportのFastScript(スタックはリンクを許可しません)。 PascalScript、C++スクリプト、JScript、およびBasicScriptが含まれています。 PascalScriptはまさにあなたが求めているようです。

+1

Questionは無料を指定します。 FastReportは商用です。それは良いですが。 –

+0

@WarrenPああ、申し訳ありませんが、あなたは正しいです。私は "フリー"という言葉が恋しい。 – Badiboy

0

Luaを埋め込みます。たとえば、Lua 5.1 for Delphiを参照してください。

+0

Luaには 'end'キーワードと' function'キーワードがありますが、パスカル風ではありません。 –

関連する問題