Pregunta

Mi pregunta es a continuación.

Aquí está mi configuración:

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;

¿Por qué recibo el siguiente error cuando intento compilar cualquier secuencia de comandos.

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

Yo sé que tiene que ver con mi intento de importar el método newItem en el compilador de PS, pero no sé por qué no aceptará el TStringList. Sé que es la TStringList porque si tomo el parámetro TStringList y sólo tiene que utilizar el método con la siguiente firma entonces todo funciona.

    procedure NewItem(const Caption:string);

No puedo encontrar ninguna referencia diciendo que no puedo dejar pasar objetos de ida y vuelta entre el compilador / script y mi código de Delphi, pero estoy empezando a pensar que puede haber una limitación en hacer exactamente este tipo de cosas.

tendría más sentido tratar de pasar una matriz de cadenas en lugar de un TStringList?

¿Fue útil?

Solución

Si tuviera que adivinar, diría que es probablemente porque no está registrado, la clase TStringList todavía. Las clases tienen que ser registrados con PascalScript antes de que pueda utilizarlos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top