フォーラム


ゲスト  

ようこそ ゲスト さん。このフォーラムに投稿するには 登録が必要です。

ページ: [1]
トピック: Javascript engine for delphi based on spidermonkey
DEKO
管理者
投稿数: 2691
Javascript engine for delphi based on spidermonkey
on: 2013/08/16 10:29 Fri

JavaScript エンジンです。

[Javascript engine for delphi based on spidermonkey]
http://code.google.com/p/delphi-javascript/

SpiderMonkey ベースで、JavaScript 1.8.5 相当 (Firefox 17 に搭載されているものと同等) です。XE2 以降で動作します。

何はともあれ最小限のデモアプリを作ってみます。フォームに Memo と Button を貼って、以下のようなコードを記述します。

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics,
Controls, Forms, Dialogs, js15decl, jsintf, StdCtrls;

type
TForm1 = class(TForm)
Memo1: TMemo;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
private
{ Private 宣言 }
FJSEngine: TJSEngine;
end;

var
Form1: TForm1;

implementation

uses
RTTI, typinfo;

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
FJSEngine := TJSEngine.Create;
TJSClass.CreateJSObject(Self, FJSEngine, 'MainForm', [cfaInheritedMethods, cfaInheritedProperties]);
FJSEngine.EvaluateFile('test.js');
FJSEngine.CallFunction('main');
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
FJSEngine.Free;
end;
end.

 
んで、以下のような test.js を用意します。

function Button1Click(Sender)
{
MainForm.Memo1.Lines.Add('Click!');
}

function main()
{
MainForm.Button1.OnClick = Button1Click;
}

 
Delphi では Button のイベントハンドラを記述していませんが、Button を押すと Memo には "Click!" が表示されます…面白いですね。

逆に Delphi 側で実装したメソッドを JavaScript 側から呼び出す事もできます。使用方法についての詳細なドキュメントはありませんが、付属のデモをコンパイルしてみると大体解ると思います。

See Also:
[SpiderMonkey]
https://developer.mozilla.org/en-US/docs/SpiderMonkey

[Spider Monkey (DocWiki)]
http://ja.wikipedia.org/wiki/SpiderMonkey

DEKO
管理者
投稿数: 2691
JavaScript Engine for Delphi with TLCD5x7
on: 2013/08/23 19:27 Fri

JavaScript Engine for Delphi と TLCD5x7 を組み合わせてみました。

なんか楽しい (w

  • [Run] を押すと "function main()" が呼び出されます。
  • LCD クラスは TLCD5x7 そのものです。
  • 組み込み関数は Print(s) / Locate(x, y) / Wait(t) / Cls() があります。

See Also:
[TLCD5x7]
http://ht-deko.minim.ne.jp/delphiforum/?vasthtmlaction=viewtopic&t=1243
[LCDCalc (上のバイナリデモ)]
http://ht-deko.minim.ne.jp/software/lcdcalc.zip

元ネタは

[プログラム講座 (ピクごんの町)]
http://pikugon.choitoippuku.com/prog2-3.html

ページ: [1]
WP Forum Server by ForumPress | LucidCrew
バージョン: 1.7.5 ; ページロード: 0.025 sec.