Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problema creando instancias (https://www.clubdelphi.com/foros/showthread.php?t=73748)

J.Slann 13-05-2011 22:41:31

Problema creando instancias
 
Buenas voy a intentar explicar mi problema a ver si se me entiende.

Digamos que creo varias instancias de una clase propia de la siguiente manera:

Código:

instancia1:= TMiclase.Create;
instancia2:= TMiclase.Create;
instancia3:= TMiclase.Create;

TMiclase tiene un procedimiento llamado TMiclase.procedure pero ese procedimiento lo ejecuto a través de (librerias pascal script)

Código:

Sender.AddMethod(Self,@TMiclase.procedure.add,'function add(a,b:integer):integer;');
El código de TMiclase.procedure sería algo así:

Código:

procedure TMiclase.procedure
begin
  variable.otro_procedimiento; // Esto ejecuta otro procedure
end;

El problema es que así no me funciona porque no tiene datos en variable (antes de llamar a este procedimiento he hecho un variable:=loquesea).

Lo que creo que me pasa es que debido al usar
Código:

Sender.AddMethod(Self,@TMiclase.procedure.add,'function add(a,b:integer):integer;');
creo que el programa ejecuta el codigo de la clase, cuando lo que quiero es que lo ejecute la instancia que le toque.
Intento explicarme mejor. Al usar eso se ejecutan las lineas de codigo de TMiClase, yo quiero que lo ejecute cada instancia porque cambiará según la variable de cada instancia, pero usando lo de arriba las variables estan en nil.

Resumiendo lo que me gustaria conseguir es esto
Código:

Sender.AddMethod(Self,Direccion instancia1.procedure.add,'function add(a,b:integer):integer;');
¿Como consigo la direccion de la instancia? Debo meter la direccion ahí pero no se como conseguirla (puntero).

Saludos y gracias

maeyanes 13-05-2011 22:52:43

Hola...

Me imagino que tienes que usar la variable en lugar de la clase:

Código Delphi [-]
Sender.AddMethod(Self, @instancia1.procedure.add, 'function add(a,b:integer):integer;');


Saludos...

J.Slann 13-05-2011 22:57:35

Gracias por contestar que rápido.

Justo es eso lo que quiero pero no puedo hacerlo así me da un error de compilacion: variable required

Saludos

maeyanes 14-05-2011 03:06:54

Hola...

¿Y cuales son los parámetros que recibe el método AddMethod?


Saludos...

Al González 14-05-2011 07:34:52

Me resulta algo extraño que el compilador te permita la palabra "procedure" como identificador.

Quizá sea conveniente que nos pongas un ejemplo más real, para así entender mejor la situación y buscar una forma de resolverlo.

NOTA: Debo decir que no conozco la biblioteca Pascal Script, y puede que sea el caso también de muchos compañeros, así que dar un poco de contexto sobre qué hace esa biblioteca y para qué la usas no estaría mal. :)

Un saludo.

Al González.

LoPiTaL 14-05-2011 15:46:01

Y si el procedimiento "procedure" (también opino que deberías cambiarle el nombre) es realmente un procedure, ¿cómo no te da error al compilar en la siguiente línea?
TMiclase.procedure.add

Si procedure no devuelve nada, no puedes ejecutar un método llamado add de la nada...

Un saludo,
LoPiTaL

J.Slann 15-05-2011 18:07:44

No os preocupeis por el nombre era un ejemplo.

Estoy usando RemObjects Pascal script, el problema que tengo ahora es que no se que hacen exactamente esas funciones y me gustaria que me dierais informacion sobre algun tutorial o como leches se puede añadir la ayuda de pascal script a delphi7 porque el software existente ahora para incorporar la ayuda a delphi, no acepta delphi7 entonces no consigo ver que hace cada funcion.

Basicamente pascal scripts te permite crear scripts de programacion. Mi aplicacion abre diferentes editores de codigo, donde se programan otras aplicaciones.

Gracias por la ayuda, primero me gustaria ver la ayuda de pascal script para tirar un poco por mi cuenta y luego os pongo el ejemplo cuando ya tenga claro que falla y porque.


La franja horaria es GMT +2. Ahora son las 00:31:05.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi