¿Cómo puedo obtener Pascal Script para reconocer las funciones de 'libres' 'crear' y al importar una clase personalizada?

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

  •  20-09-2019
  •  | 
  •  

Pregunta

Estoy teniendo un problema con el ejemplo de esta artículo . El artículo explica cómo importar sus propias clases para que puedan ser llamados desde un script de Pascal. Estoy importando mi clase personalizada, pero no puedo conseguir Pascal Script para reconocer las funciones de la 'Crear' y 'libre'.

Mi plugin:

TMyPsPlugin = class
  public
    procedure PrintMessage(const AMessage: String);
end;

procedure TMyPsPlugin.PrintMessage(const AMessage: String);
begin
  ShowMessage(AMessage);
end;

Mi aplicación:

procedure TForm1.FormCreate(Sender: TObject);
var
  Plugin: TPSPlugin;
begin
  Plugin := TPSImport_MyPsPlugin.Create(Self);
  TPSPluginItem(ps.Plugins.Add).Plugin := Plugin;
end;

procedure TForm1.bCompileClick(Sender: TObject);
begin
  ps.Script.Text := mScript.Text;
  if ps.Compile then
    begin
      if ps.Execute then
        ShowMessage('Done.')
      else
        ShowMessage('Execution Error: ' + Ps.ExecErrorToString);
    end
  else
    HandleError;
end;

Mi Guión:

program test;
var
  Plugin: TMyPsPlugin;
begin
  Plugin := TMyPsPlugin.Create;
  Plugin.PrintMessage('Hello');
  Plugin.Free;
end.

Mensajes de error:

[Error] (5:25): Unknown identifier 'Create'
[Error] (7:10): Unknown identifier 'FREE'
¿Fue útil?

Solución

Al parecer, su clase de complemento desciende directamente de TObject. Añadir uPSC_std y uPSR_std a su proyecto y ejecución SIRegisterTObject y RIRegisterTObject (C y siendo R el tiempo de compilación en tiempo de ejecución y las versiones) antes de registrar su complemento. Eso va a configurar el constructor por defecto y el método gratuito. Si eso no funciona, asegúrese de que el importador de la unidad establece específicamente que usted está descendiendo de TObject.

Otros consejos

no siguió las instrucciones correctamente desde el artículo que se cita.

Se dice específicamente para ejecutar el importador de unidad, que genera dos archivos adicionales (de MyClass.pas crea MyClass.int y uPSI_MyClass.pas). Es necesario utilizar el uPSI_MyClass.pas (usando, por supuesto, el nombre de archivo correcto para su unidad), y el uso de los métodos apropiados de esa unidad.

Si se asume que su fuente de TMyPSPlugin está en MyPSPlugin.pas, el importador unidad puede plantear MyPSPlugin.int y uPSI_MyPSPlugin.pas. Que había necesidad de añadir uPSI_MyPSPlugin a su cláusula de usos, y luego usar TPSImport_MyPSPlugin.Create y el código adicional para registrar el plugin. . (Ver la cuarta imagen de la página web se enlazó -. La imagen tiene una barra de título "leer") ide_editor.pas En ese momento, Pascal Script es consciente de su clase y reconocerá que es crear y métodos gratuitos

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