Fórum PQ a msg Classe não registrada? #151356

02/04/2003

0

Pq aparece esta msg? Classe não registrada? Como faço para resolver este ´pau´?Istto acontece com um componente q tenho.


Paulo

Paulo

Responder

Posts

02/04/2003

E_gama

Quando aparece essa mensagem aparece quando seu aplicativo utiliza compnententes ActiveX ou COM+ que precisam ser registrados na máquina cliente.

Descreva melhor quando acontece, e quais componentes vc está utilizando. Assim fica melhor para a gente ajudar.


Responder

Gostei + 0

02/04/2003

Tathianam

Eu também estou com o mesmo problema!!! Tenho uma aplicação 3 camadas sendo que a Servidora foi feita uma DLL e a cliente usa o DCOM para ligar com o Servidor e, ao entrar no sistema, dá a mensagem ´CLASSE NÃO REGISTRADA´. Se puderem me ajudar!!!


Responder

Gostei + 0

02/04/2003

E_gama

tathianam, vc registrou a classe servidora no windows com o comando abaixo?

[b:bc503a078c]c:\windows\system32\regsvr32 <servidor>.DLL[/b:bc503a078c]


Responder

Gostei + 0

02/04/2003

Tathianam

A minha dúvida está justamente aí: no servidor a DLL do APPSERVER está registrada, mas como fazer no cliente?


Responder

Gostei + 0

02/04/2003

E_gama

É o seguinte, quando a máquina cliente é a mesma máquina utilizada para o desenvolvimento, não precisa registrar a classe, pois o Delphi já faz isso (desde que no projeto da classe, vc vá ao menu [b:8a6387c944]Run->Register ActiveX Server[/b:8a6387c944]).

Quando a máquina cliente é outra, vc tem que pegar o arquivo com extensão ´.TLB´ que o Delphi gera e registrar na máquina cliente. Eu fiz uma função que registra a minha classe servidor com a seguinte função:

procedure TAuditorMainForm.RegistraServidor;
var
  WFileName, DocName: WideString;
  TypeLib: ITypeLib;
  LibAttr: PTLibAttr;
  DirBuffer: array[0..MAX_PATH] of char;

begin
  try
    // Registra o lado servidor do software
    WFileName := ExtractFilePath(Application.ExeName) + ´\HookSrv.TLB´;
    OleCheck(LoadTypeLib(PWideChar(WFileName), TypeLib));
    OleCheck(TypeLib.GetLibAttr(LibAttr));
    OleCheck(TypeLib.GetDocumentation(-1, nil, nil, nil, @DocName));
    DocName := ExtractFilePath(DocName);
    OleCheck(RegisterTypeLib(TypeLib, PWideChar(WFileName), PWideChar(DocName)));
  except
  end;
end;


Nessa função, a minha classe servidora chama-se [b:8a6387c944]HookSrv.TLB[/b:8a6387c944], e na seção uses, vai a unit [b:8a6387c944]ComObj[/b:8a6387c944]


Responder

Gostei + 0

02/04/2003

Tathianam

Esse registro eu faço todas as vezes que entrar no sistema ou tem algum método para saber se a classe já está registrada?


Responder

Gostei + 0

02/04/2003

E_gama

Para ser sincero, eu sempre executo essa função na aplicação.
Uma forma simples de verificar, seria vc ver se o TLB está no computador cliente, se tiver vc o registra e o apaga em seguida, pois uma vez registrado, ele não é mais necessário.


Responder

Gostei + 0

02/04/2003

Tathianam

Eu vou ficar maluca!!! Registrei a TLB, coloquei um Shomessage só para ter certeza, e o erro continua :(


Responder

Gostei + 0

02/04/2003

Tathianam

A linha de código

OleCheck(TypeLib.GetDocumentation(-1, nil, nil, nil, @DocName));

está trazendo ´´ no @DocName, vc poderia me ajudar?


Responder

Gostei + 0

02/04/2003

E_gama

Tem como vc nos passar um fragmento de código de sua aplicação para podermos verificar ?


Responder

Gostei + 0

02/04/2003

Paulo

Só dá pau qdo uso o EasyReport, em especial o componente NotaFiscal e EasyRep


Responder

Gostei + 0

03/04/2003

E_gama

Paulo, você tem o EasyReport para Delphi 5 ? Eu só encontrei para Delphi 6.

Se tiver ou souber onde posso baixá-lo, me passe o link. Assim posso verificar o problema.

A principio, ele deve utilizar algumas classes que têm que ser registrada no windows (tem um arquivo chamado[b:4d9cb16c50]SPL32TLB.dcu[/b:4d9cb16c50] juntos com os arquivos que baixei para Delphi 6), por isso, quero uma versão para Delphi 5 para eu poder testar.


Responder

Gostei + 0

02/10/2008

Rodfernandes

Confirme se existe e está registrada a midas.dll no system32.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar