Structure MaStructure
Champ1.f
Champ2.s
EndStructure
; PureBasic ajoute lui-même le Next et le Previous
NewList Maliste.MaStructure() ; Déclare une liste chainée
Declare TestList(*ptr)
; Ensuite tu peux ajouter un élément à la liste
AddElement(Maliste())
; mémorise le point de la liste créée
*liste = @Maliste()
Maliste()\Champ1 = 34.23
Maliste()\Champ2 = "Salut"
; Ajoute un autre élément
*pointeur.MaStructure = AddElement(Maliste())
Maliste()\Champ1 = 87.81
Maliste()\Champ2 = "au revoir"
TestList(*liste)
; partie de manipulation des pointeurs
*pointeur = PeekL(*pointeur + 4) ; recupère le pointeur vers la précédente structure
Debug PeekF(*pointeur + 8) ; affiche la première donné
; si on veut passer par les champ, faut ajouter au pointeur les
; 2x4 octets des deux Next/Previous ajouté par PB dans ta structure
*champ.MaStructure = *pointeur + 8
Debug *champ\Champ1 ; et on peut lire les champs
Debug *champ\Champ2
Debug "============"
; meme principe pour le suivant
*pointeur = PeekL(*pointeur) ; récupère le suivant cette fois
Debug PeekF(*pointeur + 8) ; affiche la première donné
*champ.MaStructure = *pointeur + 8
Debug *champ\Champ1 ; et on peut lire les champs
Debug *champ\Champ2
Debug "============"
; tu peux visualiser le contenu de ta liste
Debug "***********"
ForEach Maliste()
Debug Maliste()\Champ1
Debug Maliste()\Champ2
Debug "***********"
Next
; procedure quelconque
Procedure TestList(*ptr)
Protected NewList Uneliste.MaStructure()
ChangeCurrentElement(Uneliste(), *ptr)
AddElement(UneListe())
UneListe()\Champ1 = 66.23
UneListe()\Champ2 = "Trois"
EndProcedure