私の質問は以下です。
これが私のセットアップです:
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);
NewItem メソッドを PS コンパイラにインポートしようとしたことが関係していることはわかっていますが、TStringList を受け入れない理由がわかりません。TStringList パラメーターを取り出して、次のシグネチャを持つメソッドを使用するだけですべてが機能するため、それが TStringList であることはわかっています。
procedure NewItem(const Caption:string);
コンパイラ/スクリプトと Delphi コードの間でオブジェクトをやり取りできないという参照は見つかりませんが、まさにこのタイプのことを行うには制限があるのではないかと考え始めています。
TStringList の代わりに文字列の配列を渡そうとした方が理にかなっているでしょうか?