Un petit code valant mieux qu'un long discours, passez celui-ci au débugger en modifiant la valeur de la constante #Test
(#Test = 1 : La liste chainée est combinée à une structure, #Test = 0, Liste chainée "normale").
Vous remarquerez, au passage, que les codes des deux procédure sont absolument identique, à part pour le nom des listes
Code : Tout sélectionner
Structure TEST
Liste.s
EndStructure
NewList MaListe1.s()
NewList MaListe2.TEST()
Procedure TestMyList_1()
For i = 65 To 90
AddElement(MaListe1())
MaListe1() = Chr(i)
Next
For i = 0 To 50
C1 = Random(20)
C2 = Random(20)
If C1 <> C2
SelectElement(MaListe1(), C1)
*Pointer1 = @MaListe1()
SelectElement(MaListe1(), C2)
*Pointer2 = @MaListe1()
SwapElements(MaListe1(), *Pointer1, *Pointer2)
EndIf
Next
EndProcedure
Procedure TestMyList_2()
For i = 65 To 90
AddElement(MaListe2())
MaListe2()\Liste = Chr(i)
Next
For i = 0 To 50
C1 = Random(20)
C2 = Random(20)
If C1 <> C2
SelectElement(MaListe2(), C1)
*Pointer1 = @MaListe2()
SelectElement(MaListe2(), C2)
*Pointer2 = @MaListe2()
SwapElements(MaListe2(), *Pointer1, *Pointer2)
EndIf
Next
EndProcedure
;- Modifier la valeur de la constante pour les tests
#Test = 1
;-
If #Test = 0
TestMyList_1()
ForEach MaListe1()
Debug MaListe1()
Next
ElseIf #Test = 1
TestMyList_2()
ForEach MaListe2()
Debug MaListe2()\Liste
Next
EndIf