Afin d'aider les débutants je propose de mettre ici les exemples de code fonctionnel mais qui sont une très mauvaise pratique. L'idée n'est pas de ridiculiser qui que ce soit, l'ennui c'est parfois on me demande en message privé de corriger des codes et je vois, n'ayons pas peur des mots, des horreurs, des petits canapés de chez Dracula et j'en passe. Donc j'ouvre le bal ...
Le redimensionnement d'un tableau dans une boucle :
Code : Tout sélectionner
Dim MonTableauA.s(25)
Dim MonTableauB.s(25)
Dim MonTableauC.s(25)
Flag = #True
If Flag = #True
MonMax = 500
ReDim MonTableauA(0)
ReDim MonTableauB(0)
ReDim MonTableauC(0)
For Index = 1 To MonMax
ReDim MonTableauA(Index)
ReDim MonTableauB(Index)
ReDim MonTableauC(Index)
; On fait divers traitement avec les tableaux
; ...
Next
EndIf
Si on regarde le code précédent il y a une variable (MonMax) qui est initialisé à 500 après le If ensuite on ReDim les 3 tableaux à zéro puis on entre dans la boucle pour redimensionner 499 fois les 3 tableaux. Si on ignore la quantité de donnée, l'utilisation d'une liste chaînée est préférable à un tableau mais bon ce n'est pas le cas dans l'exemple, la quantité de données est connue. Dans un cas de figure comme celui-ci aurait du être programmé comme suit :
Code : Tout sélectionner
Dim MonTableauA.s(25)
Dim MonTableauB.s(25)
Dim MonTableauC.s(25)
Flag = #True
If Flag = #True
MonMax = 500
ReDim MonTableauA(MonMax)
ReDim MonTableauB(MonMax)
ReDim MonTableauC(MonMax)
For Index = 1 To MonMax
; On fait divers traitement avec les tableaux
; ...
Next
EndIf
Là on redimensionne une seule fois les tableaux et on obtient le même résultat sans faire travailler le processeur pour rien.
Si j'ai d'autres exemples du genre, je les ajouterai au fur et à mesure. Si d'autres programmeurs expérimentés avec PB ont des exemples du genre ajouté les, cela pourra aider les débutants à ne pas faire les mêmes erreurs.
A+
Guimauve