¿Cómo puedo obtener Pascal Script para reconocer las funciones de 'libres' 'crear' y al importar una clase personalizada?
-
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'
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