VB - Problemas , problemas , problemas...


O VB é uma linguagem fácil de aprender e usar. Basta você se dedicar e em algumas horas pode estar já criando o seu primeiro programa. Com mais algum tempo você já estará apto a mandar imprimir o seu cartão com a inscrição - Programador Visual Basic e sair por ai oferecendo os seus serviços...

Mas , como nem tudo é um mar de rosas , mais cedo ou mais tarde você vai começar a se deparar com as mazelas da linguagem Visual Basic ; os problemas irão surgir quando você menos espera ; aquele programa que parecia tão fácil de criar e distribuir e que você prometeu entregar em um semana , o esta deixando maluco...(por isto nunca prometa algo que você não esta apto a cumprir...)

Erros de runtime ; erros inesperados e não documentado ; você instala e testa na sua máquina e tudo funciona , no cliente a história é outra : o sistema trava ou se recusa a funcionar . Problemas com o código , problemas com o Crystal Reports , problemas com os controels OCX , problemas com as DLL´s ; roda no Win98 mas não roda no Windows 2000 ou vice e versa...

Você já ouviu falar no termo : DLL Hell´s ( o inferno das DLL´s) ? O Sistema Windows é uma sopa de DLL´s que precisam estar corretamente registradas para funcionar ; Invariavelmente estas DLL´s são atualizadas : as vezes esta atualização acontece sem mesmo você se dar conta : aquele programa inocente que você baixou da internet e que instalou para ver como funciona , silenciosamente atualizou aquele OCX que o seu programa usava , mas a atualização não foi completa ; conclusão seu sistema vai começar a apresentar problemas...

Neste artigo eu não pretendo dar uma receita mágica que vai resolver estes problemas , quero apenas mostrar algumas saidas que podem , dependendo do seu caso , ajudá-lo a sair bem desta história... Vamos aos 'causos':

1 - Você desenvolveu um sistema no VB , testou e compilou ; gerou a instalação ; foi no cliente e instalou. Na hora de rodar o danado , você não consegue. O programa simplesmente se recusa a rodar dando a fatídica mensagem "Unexpected error" . O que você deve fazer ?

Basicamente temos 3 coisas a fazer :

  1. Primeiro tente reinstalar o programa talvez algum controle não foi atualizado , preste atenção as mensagens durante a instalação
  2. Instale a última versão dos arquivos de runtime para o VB5 ou VB6 , assim você vai obter as DLL´s OLE atualizadas.
  3. Instale e registre as últimas versões dos controles comuns - Common Controls.

Vamos ver como atingir nosso objetivo:

Para rodar programas escritos no VB o computador precisa ter :

Vejamos como podemos chegar a este ponto:

- Se o programa não roda de jeito nenhum talvez os arquivos de runtime estejam ausentes , quem sabe se você os instalar o problema desapareça , abaixo eu listo algums links onde você pode encontrar os arquivos msvbvm50.dll ( VB5 ) , msvbvm60.dll ( VB6 ) e o conjunto das DLLs OLE :

Nota: Você pode fazer o download dos arquivos e DLL também a partir de : http://www.simtel.net/vbrun.php.

Obs: Você pode obter uma cópia grátis do - Control Creation Edition of Visual Basic - para estudar e aprender a criar controles no link : http://msdn.microsoft.com/vbasic/downloads/cce/default.asp.

- Muitos programas precisam do arquivo - Common Controls : Comctl32.ocx e Comdlg32.ocx. Verifique se eles estão presentes na pasta \Windows\System ou \Winnt\System32 ; Se eles não estiver presentes . Veja abaixo uma tabela relacionando os controles e suas versões com os links para download:

Controles fornecidos com Common controls UpDown & Animation Coolbar Common dialogs
comctl32.ocx comct232.ocx comct332.ocx comdlg32.ocx
VB5 no service pack Data 16/01/1997 16/01/97 Não fornecido 16/01/97
Versão 5.00.3714 5.00.3714 5.00.3714
TypeLib V 1.1 V 1.0 V 1.1
VB5 Control Creation Edition
Download
Data 28/02/1997 Não fornecido Não fornecido 27/02/1997
Versão 5.00.3828 5.00.3714
TypeLib V 1.2 V 1.1
VB5 SP3
Download
Data 19/07/1997 19/07/1997 29/07/1997 19/07/1997
Versão 5.01.4319 5.01.4319 5.01.4329 5.01.4319
TypeLib V 1.2 V 1.0 V 1.0 V 1.1
VB6
Download
Data 23/06/1998 23/06/1998 23/06/1998 23/06/1998
Versão 6.00.8022 6.00.8022 6.00.8169 6.00.8169
TypeLib V 1.3 V 1.1 V 1.1 V 1.2
VB6 SP5 Data 22/05/2000 24/06/1998 06/12/2000 22/05/2000
Versão 6.00.8105 6.00.8022 6.07.8988 6.00.8418
TypeLib V 1.3 V 1.1 V 1.1 V 1.2

Para registrar/cancelar registro de uma OCX faça o seguinte :

I- Registrar uma OCX : digite a seguinte linha de comando no prompt : regsvr32 controle.ocx

II- Para cancelar o registro : digite a seguinte linha de comando no prompt : regsvr32 -u controle.ocx

- Uma das causas mais prováveis para as mensagens de erro : "Unexpected error" ou "Error 50003" é que uma versão incorreta de um controle comum esta registrada.

Quer um exemplo ? Existem pelo menos quatro versões do controle comctl32.ocx e dusa versões dos controles : comdlg32.ocx , comct232.ocx e comct332.ocx. Todas as versões para cada componente possui o mesmo GUID (um número de identificação do controle no sistema) mas eles não são compatíveis. ( aqui a Microsoft pisou na bola ... )

Sabe o que isto acarreta ? Um programa no VB irá funcionar com um conjunto de controles com versão anterior se ele foi compilado com estas versões . Se você instalar as novas versões e qualquer um dos controles permanecer na versão anterior , o programa não vai rodar se você compilá-lo após esta atualização parcial.

Faça o download do controle (veja a tabela acima com os links) mas preste atenção nos procedimentos :

Nota :

- Se até agora nada deu certo talvez você tenha que reparar as DLLS OLE. Que tal checar as versões das DLLs OLE ? Você pode comparar as versões no artigo da Microsoft :

Obs: Se o sistema operacional for o Windows 95 eu recomendo que você atualize o sistema para Windows 98

- Se o registro do Windows do computador estiver 'sujo' talvez limpá-lo resolva o problema. Para fazer isto você pode usar o programa RegClean que vem com o windows ou usar um programa como o COMclean que faz a mesma coisa.( com a vantagem de ter sido escrito em VB)

Vai continuar ... 


José Carlos Macoratti