Vous avez une idée pour améliorer ou modifier PureBasic ? N'hésitez pas à la proposer.
Ar-S
Messages : 9540 Inscription : dim. 09/oct./2005 16:51
Contact :
Message
par Ar-S » mar. 03/oct./2023 12:36
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
case
Messages : 1546 Inscription : lun. 10/sept./2007 11:13
Message
par case » mar. 03/oct./2023 21:51
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
j'ai mal a la tete juste d y penser
Mesa
Messages : 1126 Inscription : mer. 14/sept./2011 16:59
Message
par Mesa » sam. 07/oct./2023 11:08
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.
Ar-S
Messages : 9540 Inscription : dim. 09/oct./2005 16:51
Contact :
Message
par Ar-S » sam. 07/oct./2023 23:14
Merci Mesa, c'est fonctionnel même si je ne pense pas utiliser cet ajout de tableau. C'est intéressant.
threedslider
Messages : 455 Inscription : dim. 01/juil./2018 22:38
Message
par threedslider » jeu. 26/oct./2023 8:04
Oui ce serait bien avoir structures des données à la C dans Purebasic ! Ce serait trop super