5

dwscriptでモーダルフォームを作成しようとしています。フォームを ExposeRtti に登録してからスクリプトを実行しますが、Script.Compile 中に「スタック オーバーフロー」で失敗します。このエラーの解決策はありますか。

remobjects PascalScript の場合のように、TForm のすべてのプロパティと関数を手動で登録する必要がないように願っています。

dwscript はこれを行うことができますか、それともフォームは単に dwscript の範囲を超えていますか (この段階で?)?

procedure TMainForm.Button1Click(Sender: TObject);
var AdwsProgramExecution: IdwsProgramExecution;
  ADelphiWebScript: TDelphiWebScript;
  AdwsProgram: IdwsProgram;
  AdwsUnit: TdwsUnit;
begin
  AdwsUnit := TdwsUnit.Create(nil);
  ADelphiWebScript := TDelphiWebScript.Create(nil);
  try
    AdwsUnit.UnitName := 'ShowModalTest';
    AdwsUnit.Script := ADelphiWebScript;
    AdwsUnit.ExposeRTTI(TypeInfo(TObject)); //Otherwise GetOnAlignInsertBefore error when 'compiling'
    AdwsUnit.ExposeRTTI(TypeInfo(TForm)); //Want t ocreate a form
    AdwsProgram := ADelphiWebScript.Compile('procedure TestShowModal; begin TForm.Create(nil).ShowModal; end; end.'); //Stack overflow
    if AdwsProgram.Msgs.Count = 0 then 
    begin
      AdwsProgramExecution := AdwsProgram.Execute;
      MEResult.Lines.Text := AdwsProgramExecution.Result.ToString;
    end
    else 
      MEResult.Lines.Text := AdwsProgram.Msgs.AsInfo;
  finally
    ADelphiWebScript.Free;
    AdwsUnit.Free;
  end;
end;
4

1 に答える 1

0

どうやら dwscript は、単純なクラスでない限り、拡張 RTTI を介して適切に登録することはできません。それは私がスクリプトエンジンについて考えていたことではないので、(今のところ)複雑な構造をrtti登録できない限り、dwscriptは完全にチャートから外れています。非常に有望ですが、このパッケージが完成して使用できるようになるまでには、まだ道のりがあります。

とりあえず、pascalscript、paxcompiler、または tmsscript に戻ります

于 2012-05-20T21:54:39.547 に答える