Buenas tengo un problemilla que no se a que se debe.
Tengo la funcion que esta mas abajo que lo que hace es levantar una libreria BPL, hasta aca todo bien sin problemas, de esta libreria necesito llamar a una funcion que solo me retorna un STRING, hasta aca todo bien.
Resulta que cuando hago menuName := FuncGetMainMenu; y despues hago un UnloadPackage(handle); explota con error de memoria, si no hago el UnLoad todo bien, pero si o si necesito liberar esa memoria, que puede ser?
Hay que liberar memoria de aca FuncGetMainMenu ?
yo mas que nada necesito poder llamarlo varias veces asi, por eso hice esa funcion, pero explota al liberar.
modulos.getSubMenu('mimodulo1.bpl', string1 );
modulos.getSubMenu('mimodulo2.bpl', string2 );
modulos.getSubMenu('mimodulo3.bpl', string3 );
Gracias
Dejo algo del codigo aca:
Código Delphi
[-]
type
TGetMainMenu = function: string;
Codigo de la funcion:
Código Delphi
[-]
function TModules.getMainMenu(moduleName: string; var menuName: string): Integer;
var
FuncGetMainManu: TGetMainMenu;
begin
menuName := '';
if FileExists(ExtractFilePath(ParamStr(0))+moduleName) then
begin
handle := LoadPackage(ExtractFilePath(ParamStr(0))+moduleName);
if handle <> 0 then
begin
try
@FuncGetMainManu := GetProcAddress(handle,'getMenu');
if Assigned(FuncGetMainManu) then
begin
menuName := FuncGetMainManu;
if menuName <> '' then
Result := 0
else
Result := -1;
end
else
Result := -2;
finally
UnloadPackage(handle);
end;
end
else
Result := -3;
end
else
Result := -4;
end;