Une procédure pour créer une liste chainé
Publié : mer. 25/janv./2006 22:16
Cet exemple provient de la section de Rapport de bogue du forum Anglais.
La procédure fautive devait créer un liste chainé et ajouter des élément
à la liste en même temps.
À l'éxécution du code il y a un erreur. La liste chainé est clonée à chacun
des appels de la procédure. Selon mon point de vue ce n'est pas un
bogue, mais plutôt une erreur d'écriture du code. Regardez la version
modifiée du code précédent.
Dans la version modifié, il n'y a aucun erreur. La liste chainé est créer au
premier appel et n'est pas clonée par la suite. Les valeurs sont
simplement ajouté à la liste.
L'utilisation de la variable static OneShot fait en sorte que la procédure se
rappelle toute seule si elle à créer la liste ou non.
Il est certain qu'il est agréable que le Compilateur nous retourne un
message d'erreur lorsque l'on fait des gaffes. Mais ce ne sont pas toujours
des bogues, mais plutôt la manière dont le code est écrit qui cause
problème.
J'espère que cette démonstration sera utile pour ceux qui on besoin de
procédures pour créer des listes chainées.
A+
Guimauve
La procédure fautive devait créer un liste chainé et ajouter des élément
à la liste en même temps.
Code : Tout sélectionner
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Code original
Procedure zaehle(z.l)
NewList test.l()
AddElement(test())
test() = z
EndProcedure
zaehle(10)
zaehle(11)
Debug test()
ForEach test()
Debug test()
Next
des appels de la procédure. Selon mon point de vue ce n'est pas un
bogue, mais plutôt une erreur d'écriture du code. Regardez la version
modifiée du code précédent.
Code : Tout sélectionner
; <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
; Code modifié
Procedure zaehle(z.l)
Static OneShot.b
If OneShot = #False
NewList test.l()
OneShot = #True
EndIf
AddElement(test())
test() = z
EndProcedure
For comp = 5 To 15
zaehle(comp)
Next
ForEach test()
Debug test()
Next
premier appel et n'est pas clonée par la suite. Les valeurs sont
simplement ajouté à la liste.
L'utilisation de la variable static OneShot fait en sorte que la procédure se
rappelle toute seule si elle à créer la liste ou non.
Il est certain qu'il est agréable que le Compilateur nous retourne un
message d'erreur lorsque l'on fait des gaffes. Mais ce ne sont pas toujours
des bogues, mais plutôt la manière dont le code est écrit qui cause
problème.
J'espère que cette démonstration sera utile pour ceux qui on besoin de
procédures pour créer des listes chainées.
A+
Guimauve