Más del mismo pesado...
Si sigo algunas indicaciones de RTTI hay una manera que sí em funciona, pero, ¿es la única?
Si hago que la clase sea así:
Código Delphi
[-]unit UClasePrueba;
interface
uses
Windows, Messages, SysUtils, Classes;
type
TClasePrueba = class(TPersistent)
private
sNombre: String;
sEdad: Integer;
Prueba(nombre: String; edad: Integer);
function GetNombre : String;
procedure SetNombre(const nombre: String);
function GetEdad : Integer;
procedure SetEdad(const edad: Integer);
public
published
property Nombre: String read GetNombre write SetNombre;
property Edad: Integer read GetEdad write SetEdad;
end;
implementation
Prueba.CreatePrueba(nombre: String; edad: Integer);
begin
sNombre := nombre;
sEdad := edad;
end; }
procedure TClasePrueba.SetNombre(const nombre: String);
begin
sNombre := nombre;
end;
procedure TClasePrueba.SetEdad(const edad: Integer);
begin
sEdad := edad;
end;
function TClasePrueba.GetNombre() : String;
begin
result := sNombre;
end;
function TClasePrueba.GetEdad() : Integer;
begin
result := sEdad;
end;
initialization
RegisterClass(TClasePrueba);
finalization
UnRegisterClass(TClasePrueba);
end.
Y lo llamo como:
Código Delphi
[-]unit Paquetes;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, TypInfo;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
public
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
Paquete: HModule;
PruebaClass: TPersistentClass;
Prueba: TPersistent;
nombre: String;
begin
Paquete := LoadPackage('PaquetePrueba.bpl');
if (Paquete <> 0) then
begin
Showmessage('Paquete Cargado');
PruebaClass := TPersistentClass(GetClass('TClasePrueba'));
if (Assigned (PruebaClass)) then
begin
Showmessage('Clase cargada');
Prueba := PruebaClass.Create;
try
SetPropValue (Prueba, 'Nombre', 'Benjamin');
nombre := getPropValue(Prueba, 'Nombre');
ShowMessage(nombre);
finally
Prueba.Free;
end;
end;
UnloadPackage(Paquete);
end;
end;
end.
¿Y si quién diseño los .bpl no utilizó este metodología?
¿Es la única posible? Seguimos leyendo.
Muchas gracias.
Saludos.