Compartilhar via


Solucionando Problemas de Aplicativos Atualizados a Partir do Visual Basic 6.0

Embora a atualização de ferramentas da Visual Basic 2008 são cuidadosamente desenvolvido para detectar e relatar os problemas com os aplicativos atualizados, existem alguns casos que possivelmente não podem ser detectados. Esta página lista alguns problemas conhecidos que não são detectados pelas ferramentas atualizadas e explica como tratá-los.

Ao trabalhar com um aplicativo atualizado com uma versão anterior do Visual Studio, os links Help inseridos pela ferramenta atualizada podem causar um erro "Página não encontrada". Isso ocorre porque os links fazem referências à coleção Help para a versão anterior, e o formato para os vínculos do Help foram alterados.

Para corrigir este problema, você pode copiar a sequência de caracteres do erro e usar a função Search no Help para localizar o tópico.Observe que algumas sequências de caracteres do erro incluem variáveis, portanto você pode precisar pesquisar parte de uma sequência de caracteres.

Diferença de Comportamento para Sequências de Caracteres de Comprimento Fixo em um Tipo Definido pelo Usuário

No Visual Basic 6.0, sequências de caracteres atribuídas a uma sequência de caracteres de comprimento fixo em um tipo definido pelo usuário são truncadas automaticamente se elas forem mais longas do que o comprimento fixo.Após a atualização para o Visual Basic 2008, seqüências de caracteres não são truncadas, possivelmente resultando em resultados incorretos.

Observação:

Durante a atualização, o VBFixedString atributo é adicionado à seqüências de caracteres de comprimento fixo em tipos definidos pelo usuário. Este atributo permite que as funções file na biblioteca de compatibilidade do Visual Basic trate-as como sequências de comprimento fixo.

Para corrigir o problema, encontre algum código que atribui uma sequência de caracteres para uma sequências de caracteres de comprimento fixo e adicione código para checar o comprimento de uma sequência de caracteres e truncar se necessário:

' Before
MyString = "1234567"
MyStruct.FixedString5 = MyString

' After
MyString = "1234567"
If Len(MyString) > 5 Then
  MyString = Microsoft.VisualBasic.Left(MyString, 5)
End If
MyStruct.FixedString5 = MyString

Ao Fechar um Formulário o Dispose é Chamado

No Visual Basic 6.0, você pode descarregar um formulário e posteriormente recarregá-lo chamando o Show método. In Visual Basic 2008, o Close método para um formulário chama o Dispose método para que ela seja automaticamente coletado ao lixo. Isso pode causar sutis diferenças de comportamento que podem ser difíceis de detectar.

  • In Visual Basic 2008, se você telefonar o Show método para um formulário que tenha sido descarregado, você receberá uma nova instância do formulário; as definições de propriedade da classe base serão perdidas.

  • Para formulários que são mostrados de acordo com o modo, Dispose não é chamado automaticamente. Em alguns casos, convém chamar Dispose Para limpar recursos.

Ligações Tardias de Chamadas para Objetos COM Podem Causar Erros de Incompatibilidade

No Visual Basic 6.0, quando um objeto COM é passado sistema autônomo um parâmetro para uma telefonar de ligação tardia o objeto é forçado para um Variant do tipo Nothing. Quando atualizado para Visual Basic 2008Objetos COM declarados sistema autônomo tipo Object são tratadas da mesma forma Variants (que são sempre convertidos para o tipo Object durante atualização); esses objetos são empacotados para o tipo de variante Empty. Isso causará um erro de tipos incompatíveis em Visual Basic 2008.

Para corrigir este problema, certifique-se que todos os objetos foram antecipadamente ligados.

Valores Retornados pelo Err.Number Podem Ser Diferentes

Em alguns casos, erros retornados por Visual Basic 2008 podem ser diferentes daqueles retornado pelo Visual Basic 6.0. Para tratamentos de erro de código que confiam em valores retornados por Err.Number, podem causar comportamento diferente em seu aplicativo.

O código a seguir mostra um exemplo disso:

' Visual Basic 6.0
On Local Error GoTo Result
Dim x() As Boolean
Dim y As Variant

y = x(10)

Result:
If Err.Number = 9 Then
   ' Do something.
Else
   ' Do something else.
End If

Antes de atualizar, Err.Number sempre retornar 9 (Subscrito fora do intervalo) e executar a primeira parte dos If demonstrativo. Após a atualização, ela retornará 91 (variável objeto ou bloco With não definido) e executar o Else cláusula. Isso ocorre porque no Visual Basic 2008, uma matriz deve ser inicializada antes que ela possa ser referenciada; no Visual Basic 6.0, matrizes são inicializadas quando declaradas.

Se você depender sistema autônomo valores de retorno de Err.Number no seu código, você cuidadosamente testar sistema autônomo resultados e modificar seu código conforme necessário.

Consulte também

Conceitos

Trabalhando com ambos Visual Basic 6.0 e a versão atual do Visual Basic

Outros recursos

Atualizando Aplicativos Criados em Versões Anteriores do Visual Basic