Domanda

La mia domanda è inferiore.

Qui è la mia messa a punto:

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;

Perché mi appare il seguente errore quando provo a compilare qualsiasi script.

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

So che ha a che fare con il mio tentativo di importare il metodo NewItem nel compilatore PS, ma non so il motivo per cui non accetterà la TStringList. So che è il TStringList perché se prendo il param TStringList e basta usare il metodo con la seguente firma poi tutto funziona.

    procedure NewItem(const Caption:string);

Non riesco a trovare alcun riferimento dicendo che non posso passare oggetti avanti e indietro tra il compilatore / script e il mio codice Delphi ma sto cominciando a pensare che forse c'è una limitazione nel fare esattamente questo tipo di cose.

avrebbe più senso cercare di passare un array di stringhe, invece di un TStringList?

È stato utile?

Soluzione

Se dovessi indovinare, direi che probabilmente è perché non avete ancora registrato la classe TStringList. Le classi devono essere registrati presso PascalScript prima che li possono utilizzare.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top