Page 1 sur 1

Des listes structurées plus facile à lister ?

Publié : mar. 03/oct./2023 12:36
par Ar-S
Yo les amis.

Lorsqu'on utilise une liste structurée, ni a t'il pas un moyen de lister tous les éléments de la liste structurée sans avoir à nommer chacune des variables ? dans mon exemple : truc()\forme$ et truc()\taille

Un genre de ExamineListElement() / While NextListElement() / Wend serait vraiment pratique quand on a une structure bien grasse.

Code : Tout sélectionner

Structure description
    forme$
    taille.i
EndStructure

NewList truc.description()

AddElement(truc())
truc()\forme$ = "carré"
truc()\taille = 12

AddElement(truc())
truc()\forme$ = "rond"
truc()\taille = 20


AddElement(truc())
truc()\forme$ = "triangle"
truc()\taille = 38


ForEach truc()
    Debug truc()\forme$ + " de taille " +truc()\taille
Next

Re: Des listes structurées plus facile à lister ?

Publié : mar. 03/oct./2023 21:51
par case
pas vraiment possible ou alors en alant lire directement la memoire a l adresse de ton element + offsetof() de l'element de la structure
mais comment gerer les differents types , sans compter les elements structures dans la structure 8O j'ai mal a la tete juste d y penser

Re: Des listes structurées plus facile à lister ?

Publié : sam. 07/oct./2023 11:08
par Mesa
Il faudrait récupérer tous les pointeurs et le type de chaque élément.

PB gère la chaîne des pointeurs en interne et Fred déconseille de trifouiller dans PB parce qu'il peut changer cette gestion sans prévenir.

Code : Tout sélectionner

Dim p(100)

Structure description
	forme$
	taille.i
EndStructure

NewList truc.description()

AddElement(truc())
truc()\forme$ = "carré"
truc()\taille = 12
p(0)=@truc()\forme$
p(1)=@truc()\taille

AddElement(truc())
truc()\forme$ = "rond"
truc()\taille = 20
p(2)=@truc()\forme$
p(3)=@truc()\taille 

AddElement(truc())
truc()\forme$ = "triangle"
truc()\taille = 38
p(4)=@truc()\forme$ 
p(5)=@truc()\taille 

ForEach truc()
	Debug truc()\forme$ + " de taille " +truc()\taille
Next

Debug "==========="
i=0
Repeat
	; 	Debug p(i)
	Debug PeekS(p(i))
	Debug PeekI(p(i+1))
	i=i+2
Until i >=5

; ShowMemoryViewer(@p, 255)

M.

Re: Des listes structurées plus facile à lister ?

Publié : sam. 07/oct./2023 23:14
par Ar-S
Merci Mesa, c'est fonctionnel même si je ne pense pas utiliser cet ajout de tableau. C'est intéressant.

Re: Des listes structurées plus facile à lister ?

Publié : jeu. 26/oct./2023 8:04
par threedslider
Oui ce serait bien avoir structures des données à la C dans Purebasic ! Ce serait trop super :mrgreen: