Forum Liberty Basic France
• Index
• Débutant » [Résolu] BUG "BASIC Compile Halted: array monTableau2D() is one dimensional" Le saviez-vous ?
Petit bug que je viens de découvrir.
Je poste ici, si sa peut aider quelqu'un :
----------------------------------------------------------------
Selon l'ordre de nos subs, l'exécution de notre programme peut provoquer le bug suivant :
Dans ce 1er exemple, tout fonctionne correctement :
Code VB :
Dans ce deuxième code, l'ordre des subs "monTest" et "maSub" sont inversés et provoque une erreur de compilation :
Code VB :
Edité par joan74 Le 16/05/2021 à 09h44
Je poste ici, si sa peut aider quelqu'un :
----------------------------------------------------------------
Selon l'ordre de nos subs, l'exécution de notre programme peut provoquer le bug suivant :
"BASIC Compile Halted: array monTableau2D() is one dimensional"
Dans ce 1er exemple, tout fonctionne correctement :
Code VB :
nomainwin call maSub end sub maSub dim monTableau2D(100,100) for i = 1 to 100 monTableau2D(i,i)=i next i call monTest end sub sub monTest notice monTableau2D(50,50) end sub
Dans ce deuxième code, l'ordre des subs "monTest" et "maSub" sont inversés et provoque une erreur de compilation :
Code VB :
nomainwin call maSub end sub monTest notice monTableau2D(50,50) end sub sub maSub dim monTableau2D(100,100) for i = 1 to 100 monTableau2D(i,i)=i next i call monTest end sub
Edité par joan74 Le 16/05/2021 à 09h44
____________________
"L'urgent c'est fait ! L'impossible est en cours... pour les miracles, merci de prévoir un délai supplémentaire !"
"L'urgent c'est fait ! L'impossible est en cours... pour les miracles, merci de prévoir un délai supplémentaire !"
'Une solution consiste à déclarer global
nomainwin
dim monTableau2D(100,100)
call maSub
end
sub monTest
notice monTableau2D(50,50)
end sub
sub maSub
for i = 1 to 100
monTableau2D(i,i)=i
next i
call monTest
end sub
nomainwin
dim monTableau2D(100,100)
call maSub
end
sub monTest
notice monTableau2D(50,50)
end sub
sub maSub
for i = 1 to 100
monTableau2D(i,i)=i
next i
call monTest
end sub
Un an plus tard, j'ai enfin compris l'erreur.
Du compilateur, il suppose un tableau non déclaré de dimension dix.
Code VB :
La solution est de "passer" le tableau par référence à la procédure.
Code VB :
Du compilateur, il suppose un tableau non déclaré de dimension dix.
Code VB :
nomainwin call maSub end sub monTest notice MYmonTableau2D(10) end sub sub maSub dim monTableau2D(100,100) for i = 1 to 100 monTableau2D(i,i)=i next i call monTest end sub
La solution est de "passer" le tableau par référence à la procédure.
Code VB :
nomainwin call maSub end sub monTest byref myArray notice myArray end sub sub maSub dim monTableau2D(100,100) for i = 1 to 100 monTableau2D(i,i)=i next i call monTest monTableau2D(50,50) end sub
bravo pour la solution

• Débutant » [Résolu] BUG "BASIC Compile Halted: array monTableau2D() is one dimensional" Le saviez-vous ?
• Index
1 Utilisateur en ligne : 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne : Aucun membre connecté
Utilisateur en ligne : Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie