Passage de tableaux comme paramètres dans VB6
Le code suivant tue VB6 (sp6) avec une "exception non gérée anomalie dans VB.exe" sur les deux machines dans le bureau sur la ligne marquée.
''# Form1.frm
Option Explicit
Private ArrayHolder As Class2
Private Sub Command1_Click()
Set ArrayHolder = New Class2
Dim arr(3) As Long
arr(0) = 1
arr(1) = 2
arr(2) = 3
ArrayHolder.Add arr
End Sub
''# -----------------------------------------------------------
''# Class1.cls
Option Explicit
Private m_myArray() As Long
Public Property Get myArray() As Long()
myArray = m_myArray
End Property
Friend Property Let myArray(ByRef anArray() As Long)
m_myArray = anArray
End Property
''# -----------------------------------------------------------
''# Class2.cls
Option Explicit
Friend Function Add(newArray() As Long) As Class1
Dim oClass As Class1
Set oClass = New Class1
oClass.myArray = newArray <- This kills VB6 dead
MsgBox "passed"
End Function
De ce que je peux dire sur divers sites, je suis de passage d'un tableau correctement, mais suis-je vraiment le faire correctement, et pourquoi est-il causer de VB6 à mourir si horriblement?
Est-il un moyen de la consigne à la syntaxe surligneur quelle langue il est arriver?
Êtes-vous sûr que ce code est correct? Le code à l'intérieur de Classe2.cls semble être la même que dans Form1.frm. Est-ce correct?
Ce code ne fait pas de sens. Où est ArrayHolder.Ajouter? Pourquoi le code en Cours2.cls est la même que dans Form1.frm?
Je me posais la même chose. Et je me demande si il est vraiment appelé "Class2", et si elle l'est, pourquoi.
Désolé. Le découpage et le collage s'est mal passé
Êtes-vous sûr que ce code est correct? Le code à l'intérieur de Classe2.cls semble être la même que dans Form1.frm. Est-ce correct?
Ce code ne fait pas de sens. Où est ArrayHolder.Ajouter? Pourquoi le code en Cours2.cls est la même que dans Form1.frm?
Je me posais la même chose. Et je me demande si il est vraiment appelé "Class2", et si elle l'est, pourquoi.
Désolé. Le découpage et le collage s'est mal passé
OriginalL'auteur graham.reeds | 2009-05-12
Vous devez vous connecter pour publier un commentaire.
Je n'ai pas de réponse, et n'est certainement une curieuse question, mais pourquoi ne pas simplement ajouter une méthode et d'avancer?
Je pense que vous venez de découvrir un bug dans le visual basic runtime. Mais nous ne verrons jamais la SP7 🙂
+1 pour le pragmatisme! Et, peut-être, malheureusement, d'être correcte sur SP7. Le support étendu pour le moteur d'exécution ne comprennent pas les service packs (je crois me souvenir)
envie de voir vous ici sur un VB post, lol 🙂
J'avoue c'est valoir que je devrais passer plus de temps dans le "monde réel"! 🙂
OriginalL'auteur Eduardo Molteni
C'est un bug dans l'IDE (compilé est ok) que MS ne jamais fixe. Je suis à l'aide d'une solution de contournement avec un temp de tableau comme ceci:
Pour info, il y a pire avec les tableaux d'Octets (Long de tableaux sont en sécurité) accidentellement lorsque vous passez la souris sur le paramètre ou la propriété du tableau. Mieux de garder ta souris dans le code :-))
OriginalL'auteur wqw
Je n'ai aucune idée de pourquoi cela arrive, mais si vous voulez une copie d'un tableau, d'utiliser une Variante de la classe 2:
Correctifs, mais quand même, je suis curieux de savoir la raison.
Peut-être que vous avez juste fait ce que j'ai dit et remplacé matières de la Classe 2 du présent code. 🙂 Bien sûr, je voulais dire Class1. Fonctionne très bien pour moi.
Plante encore dans ma machine
OriginalL'auteur GSerg