Perché non posso registrare questo metodo con il compilatore PascalScript?
-
19-09-2019 - |
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?
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.