Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Aggiornamento: novembre 2007
Sebbene gli strumenti di aggiornamento disponibili in Visual Basic 2008 siano stati appositamente progettati per rilevare e segnalare eventuali problemi con le applicazioni aggiornate, vi sono casi in cui il rilevamento non può essere effettuato in alcun modo. In questa pagina vengono elencati alcuni problemi noti che non vengono rilevati dagli strumenti di aggiornamento e viene illustrato come risolverli.
Impossibile accedere ai collegamenti della Guida dopo l'aggiornamento a Visual Studio
Quando si utilizza un'applicazione aggiornata con una versione precedente di Visual Studio, i collegamenti della Guida inseriti dallo strumento di aggiornamento possono causare un errore di tipo "Impossibile trovare la pagina". Il problema si verifica perché i collegamenti fanno riferimento all'insieme della Guida della versione precedente e il formato dei collegamenti è cambiato.
Per risolvere il problema, copiare la stringa di errore e utilizzare la funzionalità di ricerca della Guida per trovare il relativo argomento. Si noti che alcune stringhe di errore includono variabili, per cui potrebbe essere necessario effettuare la ricerca su una porzione di stringa.
Differenza di comportamento per stringhe di lunghezza fissa in tipi definiti dall'utente
In Visual Basic 6.0 le stringhe assegnate a una stringa di lunghezza fissa in un tipo definito dall'utente vengono troncate automaticamente se superano la lunghezza fissa. In seguito all'aggiornamento a Visual Basic 2008, le stringhe non verranno più troncate e potranno generare risultati non corretti.
Nota: |
|---|
Durante l'aggiornamento, l'attributo VBFixedString viene aggiunto alle stringhe di lunghezza fissa nei tipi definiti dall'utente. Questo attributo consente alle funzioni di archiviazione nella libreria di compatibilità di Visual Basic di gestirle come stringhe di lunghezza fissa. |
Per risolvere questo problema, individuare il codice mediante il quale viene assegnata una stringa alla stringa di lunghezza fissa, aggiungere il codice per controllare la lunghezza della stringa e, se necessario, troncarla.
' 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
Chiamata al metodo Dispose alla chiusura di un form
In Visual Basic 6.0 è possibile scaricare un form e ricaricarlo successivamente chiamando il metodo Show. In Visual Basic 2008 il metodo Close di un form chiama il metodo Dispose in modo che venga automaticamente raccolto nel Garbage Collector. Questa operazione può causare lievi differenze di comportamento difficilmente rilevabili.
In Visual Basic 2008, se si chiama il metodo Show per un form che è stato scaricato, si otterrà una nuova istanza del form e le impostazioni delle proprietà dalla classe base andranno perse.
Per i form visualizzati come modali, il metodo Dispose non viene chiamato automaticamente. In alcuni casi, è possibile chiamare Dispose per pulire le risorse.
Possibili errori di mancata corrispondenza dei tipi causati da chiamate ad associazione tardiva a oggetti COM
In Visual Basic 6.0 quando un oggetto COM ad associazione tardiva viene passato come parametro a una chiamata ad associazione tardiva, l'oggetto viene assegnato al tipo Nothing di Variant. Una volta aggiornati a Visual Basic 2008, gli oggetti COM dichiarati come tipo Object vengono gestiti come tipi di dati Variants, i quali vengono sempre convertiti nel tipo Object durante l'aggiornamento. Per questi oggetti viene eseguito il marshalling al tipo Variant Empty. Questa operazione può causare un errore di tipo non corrispondente in Visual Basic 2008.
Per risolvere il problema, assicurarsi che tutti gli oggetti siano ad associazione anticipata.
Possibili differenze dei valori restituiti da Err.Number
In alcuni casi gli errori restituiti da Visual Basic 2008 possono differire da quelli restituiti da Visual Basic 6.0. Se il codice di gestione degli errori si basava sui valori restituiti da Err.Number, è possibile che il comportamento dell'applicazione risulti diverso.
Il codice che segue ne rappresenta un esempio.
' 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
Prima dell'aggiornamento, Err.Number restituisce sempre 9 (Pedice non incluso nell'intervallo) ed esegue la prima parte dell'istruzione If. Dopo l'aggiornamento, restituirà 91 (Variabile oggetto o variabile del blocco With non impostata) ed eseguirà la clausola Else. Tale differenza è dovuta al fatto che in Visual Basic 2008 è necessario inizializzare una matrice prima di farvi riferimento, mentre in Visual Basic 6.0 le matrici vengono inizializzate quando vengono dichiarate.
Se il codice utilizzato dipende dai valori restituiti da Err.Number, è opportuno eseguire il test dei risultati e modificare il codice in base alle necessità.
Vedere anche
Concetti
Utilizzo di Visual Basic 6.0 e della versione corrente di Visual Basic
Altre risorse
Aggiornamento di applicazioni create in versioni precedenti di Visual Basic
Nota: