Usar una clase que esta dentro de una librería

Quisiera que me ayudaras con esto, tengo una clase que me cree dentro de una librería y quiero usar dicha clase y sus funciones dentro de una aplicación y bueno no se como declarar un objeto de esta clase en otra aplicación, si fueran funciones sueltas dentro de la librería seria sencillo y rapido pero bueno aquí te dejo un ejemplo rapido de una clase de prueba.
library prueba;
Uses
SysUtils,
Classes;
type
Tprueba=class
a:byte;
b:byte;
public
constructor iniciar;
function sum(c,d:byte):byte;stdcall;
end;
{$R *.res}
function tprueba.sum(c,d:byte):byte;stdcall;
begin
result:=c+d;
end;
constructor tprueba.iniciar;
begin
a:=0;
b:=0;
end;
exports
//aqui tambien hay un problema
begin
end.
Agradecería mucho si me puedes indicar como usar esta clase de ejemplo en una aplicación y también como es la declaración en la sección de "exports" por que tampoco me funciona estando la función dentro la clase

1 respuesta

Respuesta
1
Ok. Mira, suponiendo que tienes una Form, y dentro de esta form quieres usar esta clase TPrueba ok.
Lo primero es poner en el uses de la form la unidad donde esta la clase Tprueba.
Luego la instanciamos para poder ejecutar la función sum, así:
var prueba:TPrueba;
begin
prueba := TPrueba.Create;
prueba.sum(1,1);
end;
Y listo eso es todo.
En realidad el problema es que la clase esta en una librería "DLL" y no en "PAS" ese es mi problema y no se si se pueda por que lo quiero hacer es juntar todas mis funciones que ya tengo en una dll para poder usarlas de nuevo en alguna otra aplicación que haga sin importar el lenguaje.
Ah ok. Bueno primeramente deberás tener en el uses tanto de tu dll como del proyecto donde vas a usar el dll la unidad llamada sharemem y debe estar puesta como primera. Ok.
Luego digamos el ejemplo que me enviaste de la clase TPrueba, pones lo siguiente:
Declaras la función global:
var
Form1: TForm1;
function sum(c,d:byte):byte; external 'c:\miDll\prueba.dll';
Aquí con esto ya la declaras y le estas diciendo que la vas a usar de la librería prueba.dll o como se llame tu dll. Ok
Y luego en el onclik de algún botón:
simplemente ejecutas la función como cualquier otra
var resultado:byte;
begin
resultado := sum(1,1);
end;
Y listo es todo, si tienes algún problema dime que te marca..
y... ¿No habría problema por que esta función este dentro de una clase? ¿Ademas no seria mejor declarar algún objeto de tipo TPrueba para llamar a todas la funciones en ves de estar declarando cada una?
Dentro de tu dll puedes tener clases hasta forms si quieres y no debe haber ningún problema. Y en cuento a lo de declarar un objeto, lo que podrías hacer es hacer un clase dentro de tu proyecto donde pongas como publicas todas las funciones del dll, pero igual lo tienes que hacer como te mencione anteriormente con el external..

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas