Estou convertendo um programa legado que utiliza formulários em crystal report, mas ao tentar imprimir usando ole está retornando sempre erro, como a imagem em anexo.
REGDB_E_CLASSNOTREG é um código de erro do Windows (HRESULT: 0x80040154) que significa "Classe Não Registrada", ocorrendo quando um aplicativo tenta usar um componente COM (Component Object Model) que não está corretamente registrado no sistema ou há um conflito de arquitetura (32-bit vs. 64-bit), sendo comum em aplicações .NET/Visual Studio ou ao interagir com DLLs/OCXs, exigindo verificação de registro de componentes, instalação de DLLs/VC++ Redistributable e ajuste da arquitetura da compilação (x86/x64).
O que significa
COM: Um componente COM (Classe) não foi encontrado no registro do Windows ou não pôde ser carregado.
HRESULT: 0x80040154: O código específico para esse erro, frequentemente associado a problemas de registro de bibliotecas.
Causas comuns
Falta de Registro: A DLL ou o componente ActiveX/OCX que a aplicação precisa não está registrado (usando regsvr32) ou o registro está corrompido.
Conflito de Arquitetura (32/64-bit): Tentar usar um componente de 32 bits em um ambiente de 64 bits (ou vice-versa), ou a plataforma "Any CPU" no Visual Studio não está configurada corretamente para a arquitetura do sistema.
Componentes Ausentes: Falta de DLLs essenciais ou pacotes Microsoft Visual C++ Redistributable.
Como resolver
Verifique o Registro (Regedit): Use ferramentas como Process Monitor (ProcMon) para ver quais chaves do registro estão faltando.
Registre a DLL/OCX: Execute regsvr32 caminho\para\sua.dll no Prompt de Comando como administrador.
Ajuste a Arquitetura no Visual Studio: Mude a configuração de compilação para x86 ou x64, dependendo do componente, em vez de "Any CPU".
Instale o Redistributable: Baixe e instale a versão correta do Microsoft Visual C++ Redistributable.
Use Ferramentas: No Windows, pode-se usar dcomcnfg para ajustar permissões DCOM ou o Prompt de Comando para registrar componentes.
Realmente, o problema é esse, parece que não tem o crystal report 64 bits para usar com OLE, tive que fazer um recurso de criar um executavel em xHarbour apenas para fazer a impressão dos relatórios do crystal report, até conseguir migrar para jasper report.
marcoprodata escreveu: 22 Dez 2025 19:12
tive que fazer um recurso de criar um executavel em xHarbour apenas para fazer a impressão dos relatórios do crystal report
Achei estranho... se funciona com xHarbour, por que não funciona em Harbour?
marcoprodata escreveu: 22 Dez 2025 19:12
tive que fazer um recurso de criar um executavel em xHarbour apenas para fazer a impressão dos relatórios do crystal report
Achei estranho... se funciona com xHarbour, por que não funciona em Harbour?
O compilador do xHarbour que tenho é 32bits, é uma versão comercial antiga.