Ver Mensaje Individual
  #1  
Antiguo 15-11-2007
Avatar de walito
walito walito is offline
Miembro
 
Registrado: jun 2005
Posts: 121
Reputación: 19
walito Va por buen camino
Limites de Delphi

Les cuento que ya me estoy cansando de esto.

Como el titulo dice, quiero saber si lo que estoy haciendo tiene algun limite o no, ya que no me anda o yo soy un verdadero inutil.
Resulta que cuando cargo una libreria BPL necesito pasarle algun parametro al Create. Como es un TForm yo me hice mi clase:

Código Delphi [-]
type
  TFormConPermisos = class(TForm)
  public
    constructor Create(AOwner: TComponent; datoExtra: string); reintroduce;
  end;


implementation

constructor TFormConPermisos.Create(AOwner: TComponent; datoExtra: string);
begin
   inherited Create(AOwner);
end;

Entonces cuando instancio mi BPL el codigo de la funcion es asi:

Código Delphi [-]
function TModules.loadModule(moduleName: string): Integer;
var
  AClass: TPersistentClass;
  Formulario: TFormConPermisos;
begin
    {* verifico que el modulo existe, junto con el archivo *}
    if
      FileExists(ExtractFilePath(ParamStr(0))+moduleName)
      and
      (moduleName <> '')
    then
    begin
        {* Cargo el modulo a memoria *}
        handle := LoadPackage(ExtractFilePath(ParamStr(0))+moduleName);

        {* si es un modulo válido *}
        if handle <> 0 then
        begin
            try
                AClass := GetClass(CLASSBPL);

                try
                    if AClass <> nil then
                    begin
                        LockWindowUpdate(Handle);
                        EnableAnimation(false);

                        Formulario := TFormConPermisos(AClass).Create(Application, 'MI DATO EXTRA') as TFormConPermisos;

                        EnableAnimation(true);
                        LockWindowUpdate(0);

                        Formulario.Show;

                        Result := 0;
                    end;
                except
                    on E:Exception do
                       Result := -1;
                end;
            except
                on E:Exception do
                   Result := -2;
            end;
        end
        else
            Result := -3;
    end
    else
        Result := -4;
end;

Esta funciona asi: loadModule('miLibreria.bpl');

Cuando esto se ejecuta, y hace el Create dentro de este nuevo Create en el inherited Create(AOwner); da error de access violation, en realidad ya no se que probar, en google nunca parece que alguien halla realizado esto.

Esta bien la herencia que estoy haciendo?
De que otra forma puedo pasarle parametros?

Gracias y ya no jodo mas.
Si algun dia averiguo como es, va un tutorial para todos ustedes.

Última edición por walito fecha: 15-11-2007 a las 21:35:19.
Responder Con Cita