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 :
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