Ver Mensaje Individual
  #1  
Antiguo 01-10-2019
josepicd josepicd is offline
Miembro
 
Registrado: jun 2015
Posts: 57
Reputación: 9
josepicd Va por buen camino
Parametros a un BPL

Buenas, tengo un nuevo problema con los BPL, os cuento:

Tengo un registro tal que asi:


Código Delphi [-]
PRec = ^TRec

TRec = record

  datoST : string;

  datoIN : integer;

end;


Vale ahora tengo un exe principal que crea una variable de ese tipo, la llena y la envia como parametro a la bpl

Código Delphi [-]
var r : TRec; 
begin   
  r.datoST := 'Prueba';   
  r.datoIN := 1;      
  fh  := LoadPackage( [el fichero bpl]);   
  fnc := GetProcAddress( fh, [mi funcion]);   
  fnc( @r);    

// Aqui funciona bien   
  showmessage( r.datoST);   
  showmessage( InttoStr( r.datoIN));    
  
  UnloadPackage( fh);   

// Aqui ya no funciona, es como si el UnloadPackage hubiese liberado la variable r que entra como parametro    
  showmessage( r.datoST);   
  showmessage( InttoStr( r.datoIN)); 
end;



Este es el codigo del bpl




Código Delphi [-]
procedure mi funcion( rec : PRec);
begin

  rec^.datoST := 'Correcto';

  rec^.datoIN := rec^datoIN+1;

end;



exports

  mi funcion;

Supongo que al liberar el bpl se libera la memoria asociada, el parametro lo toma como una variable local, y al ser un puntero que hace referencia a la misma memoria del exe, lo que hace es liberarlo todo.
Creo que el porque pasa lo entiendo, lo que no se es como solucionarlo, ¿alguna idea?
Responder Con Cita