Array
(
)

Acessar procedure/funcao de Classe criada dinamicamente

Eselvati
   - 31 ago 2004

Oi

Gostaria de obter um auxilio para poder acessar uma funcao publica de uma classe criada por mim e carregada dinamicamente em um aplicativo

por exemplo:

esta é a unit onde crio minha classe, ela fica dentro de um package criado (arquivo pacote.bpl).

unit classe;
...
minhaclasse = class
...
public
procedure displaymsg;
end;
...

procedure minhaclasse.displaymsg;
begin
showmessage(´minha classe´);
end;

initialization
registerclass(minhaclasse);

finalization
Unregisterclass(minhaclasse);

...


e em outro aplicativo eu carrego dinamicamente este pacote usando o seguinte:

procedure carrega;
var
i: integer;
sFile: string;
modelo: TPersistentClass;
begin
SetLength(APackage, 0);
sFile:=ExtractFilePath(Application.ExeName)+´pacote.bpl´;
if FileExists(sFile) then begin
SetLength(APackage, Length(APackage) + 1);
APackage[Length(APackage)-1]:=LoadPackage(sFile);
end;
modelo:=TComponentClass(modelo).create(self);
end;

o problema é como chamar a função displaymsg desta classe criada dinamicamente, pois quando vou fazer algo tipo modelo.displaymsg o delphi nao identifica esta procedure na classe criada, li o artigo da edição 54 da revista clubedelphi mas não obtive sucesso.


Qquer ajuda será importante


Ederson
Analista/Programador


Emerson
   - 31 ago 2004

não sei se funciona, mas:

modelo:=MinhaClasse.Create;
modelo.displaymsg;


Eselvati
   - 31 ago 2004

Obrigado pela dica mas como é uma classe criada dinamicamente dentro do programa, eu nao posso colocar variavel=minhaclasse.create pois o compilador do delphi nao irá permitir q eu declare variavel do tipo minhaclasse.


Eselvati
   - 31 ago 2004

Obrigado pela dica mas como é uma classe criada dinamicamente dentro do programa, eu nao posso colocar variavel=minhaclasse.create pois o compilador do delphi nao irá permitir q eu declare variavel do tipo minhaclasse.


Eselvati
   - 31 ago 2004

Obrigado pela dica mas como é uma classe criada dinamicamente dentro do programa, eu nao posso colocar variavel=minhaclasse.create pois o compilador do delphi nao irá permitir q eu declare variavel do tipo minhaclasse.


Eselvati
   - 03 set 2004

sobe


Ipc$
   - 03 set 2004

Se vc define Modelo como TPersistentClass, como vc consegue fazer:
modelo:=TComponentClass(modelo).create(self); :?:


Eselvati
   - 03 set 2004

IPC$

A minha dúvida é a seguinte, no exemplo eu dei mancada, mas a incognita continua

como executar a procedure displaymsg da classe minhaclasse ? já q ela foi criada dinamicamente e eu nao posso fazer typecast nesta classe pois se eu fizer (modelo as tminhaclasse).displaymsg o delphi nao vai entender e eu tb nao posso declarar uma variavel modelo: tminhaclasse pq a classe ta dentro de um bpl e nao na aplicação principal.

Posso estar meio confuso em explicar isto mas é o q está no artigo da revista 54 do clubedelphi, só q a classe q é criada dinamicamente no exemplo é herdada de tform então herda os métodos, showmodal, show e outros da classe, onde eu consigo fazer (modelo as tminhaclasse).showmodal (isto se modelo for herdada de TFORM).



Desculpem pelo problema



Ederson Selvati


Ipc$
   - 03 set 2004

Poste o código que vc está compilando até o .Create da sua classe.