PQ a msg Classe não registrada?
Pq aparece esta msg? Classe não registrada? Como faço para resolver este ´pau´?Istto acontece com um componente q tenho.
Paulo
Curtidas 0
Respostas
E_gama
02/04/2003
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.
Descreva melhor quando acontece, e quais componentes vc está utilizando. Assim fica melhor para a gente ajudar.
GOSTEI 0
Tathianam
02/04/2003
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!!!
GOSTEI 0
E_gama
02/04/2003
tathianam, vc registrou a classe servidora no windows com o comando abaixo?
[b:bc503a078c]c:\windows\system32\regsvr32 <servidor>.DLL[/b:bc503a078c]
[b:bc503a078c]c:\windows\system32\regsvr32 <servidor>.DLL[/b:bc503a078c]
GOSTEI 0
Tathianam
02/04/2003
A minha dúvida está justamente aí: no servidor a DLL do APPSERVER está registrada, mas como fazer no cliente?
GOSTEI 0
E_gama
02/04/2003
É 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:
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]
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]
GOSTEI 0
Tathianam
02/04/2003
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?
GOSTEI 0
E_gama
02/04/2003
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.
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.
GOSTEI 0
Tathianam
02/04/2003
Eu vou ficar maluca!!! Registrei a TLB, coloquei um Shomessage só para ter certeza, e o erro continua :(
GOSTEI 0
Tathianam
02/04/2003
A linha de código
OleCheck(TypeLib.GetDocumentation(-1, nil, nil, nil, @DocName));
está trazendo ´´ no @DocName, vc poderia me ajudar?
OleCheck(TypeLib.GetDocumentation(-1, nil, nil, nil, @DocName));
está trazendo ´´ no @DocName, vc poderia me ajudar?
GOSTEI 0
E_gama
02/04/2003
Tem como vc nos passar um fragmento de código de sua aplicação para podermos verificar ?
GOSTEI 0
Paulo
02/04/2003
Só dá pau qdo uso o EasyReport, em especial o componente NotaFiscal e EasyRep
GOSTEI 0
E_gama
02/04/2003
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.
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.
GOSTEI 0
Rodfernandes
02/04/2003
Confirme se existe e está registrada a midas.dll no system32.
GOSTEI 0