なぜpascalscriptというコンパイラでこのメソッドを登録することはできませんか?

StackOverflow https://stackoverflow.com/questions/2225287

質問

私の質問は以下の通りです。

ここに私の設定です:

interface 

  uses windows, {...,} uPSComponent_Default, uPSComponent, uPSRuntime, uPSComponent_Controls;

  TForm1 = class(TForm)
    //...
    PSScript1: TPSScript;
    PSImport_Classes1: TPSImport_Classes;
    PSImport_Controls1: TPSImport_Controls;
    procedure PSScript1Compile(Sender: TPSScript);
    //...
  Private
    procedure NewItem(const Caption:string; const SubItems:TStringList);
    //...
  end;

implementation

  {...}

  procedure TForm1.PSScript1Compile(Sender: TPSScript);
  begin
    //...
    Sender.AddMethod(Self, @TForm1.NewItem,  'procedure NewItem(const Caption:string; const SubItems:TStringList);');
    //...
  end;
私は、任意のスクリプトをコンパイルしようとすると、

なぜ私は、次のエラーを取得しています。

[Error] (1:1): Unable to register function procedure NewItem(const Caption:string; const SubItems:TStringList);

私はそれがPSコンパイラにNewItem方法をインポートする私の試みに関係しています知っているが、それはTStringListのを受け付けない理由を私は知りません。私はTStringListののPARAMを取り出し、ちょうど次のシグネチャを持つメソッドを使用するならば、すべてが動作するため、それはTStringListのだ知っています。

    procedure NewItem(const Caption:string);

私は、コンパイラ/スクリプトと私のDelphiコードの間で前後にオブジェクトを渡すことはできませんが、私は事のまさにこのタイプをやってそこに多分制限することを考え始めてると言ってすべての参照を見つけることができません。

は、それは試してみて、代わりにTStringListの?

の文字列の配列を渡すために、より理にかなって
役に立ちましたか?

解決

私は推測していた場合、私はあなたがまだTStringListのクラスを登録していないので、それはおそらくだと思います。クラスはそれがそれらを使用することができます前に、pascalscriptというに登録する必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top