Recommandations de mise à niveau : éviter les tableaux et les chaînes de longueur fixe dans les types définis par l'utilisateur
Mise à jour : novembre 2007
En raison des modifications introduites afin de rendre les tableaux et structures Visual Basic 2008 (précédemment désignés par l'expression « types définis par l'utilisateur ») pleinement compatibles avec d'autres langages Visual Studio, les chaînes de longueur fixe ne sont plus prises en charge. En général, cela ne pose aucun problème, car il existe une classe de compatibilité présentant un comportement de chaîne de longueur fixe ; si bien que le code :
Dim FixedLengthString As String * 100
devient, après mise à niveau :
Dim FixedLengthString As New VB6.FixedLengthString(100)
Toutefois, les chaînes de longueur fixe provoquent un problème lorsqu'elles sont utilisées dans des structures. Ce problème est dû au fait que la classe de chaîne de longueur fixe n'est pas automatiquement créée en même temps que la structure. Pareillement, les tableaux de taille fixe ne sont pas créés en même temps que la structure.
Lorsque votre code est mis à niveau, les types définis par l'utilisateur avec chaîne ou tableau de longueur fixe sont convertis en structures et marqués d'un commentaire vous demandant d'initialiser la chaîne ou le tableau avant de référencer la structure dans le code. Toutefois, vous pouvez éviter cette modification en changeant vos types définis par l'utilisateur Visual Basic 6.0 de telle sorte qu'ils utilisent des chaînes à la place des chaînes de longueur fixe et des tableaux non initialisés à la place des tableaux de taille fixe. Par exemple :
Private Type uType
anArray(5) As Integer
aFixedString As String * 100
End Type
Sub SomeFunction()
Dim aVariable As uType
End Sub
peut être changé en :
Private Type uType
anArray() As Integer
aFixedString As String
End Type
Sub SomeFunction()
Dim aVariable As uType
ReDim aVariable.anArray(5) As Integer
aVariable.aFixedString = String$(100, " ")
End Sub