Trier une Map ou accéder à un élement d'une liste chainée

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
falsam
Messages : 7244
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Trier une Map ou accéder à un élement d'une liste chainée

Message par falsam »

Trier une Map ou accéder dynamiquement à un élément d'une liste chaînée ..... à vous de choisir à travers cette astuce mais ne vous fier pas aux apparences).

Code : Tout sélectionner

Structure User
  User.s
  Phone.s
EndStructure

Global NewList Users.User()
Global NewMap *Users.User()

Procedure UserAdd(User.s, Phone.s)
  AddMapElement(*Users(), User)
  *Users() = AddElement(Users())
  Users()\User = User
  Users()\Phone  = Phone
EndProcedure

UserAdd("Larache", "01.45.25.15.06")
UserAdd("Tricard", "04.39.69.25.10")
UserAdd("Olap", "02.63.24.54.13")
UserAdd("Agile", "06.31.22.92.92")

Debug #CRLF$+"# Map non triée"
ForEach *Users()
  Debug "  "+*Users()\User+" = "+*Users()\Phone
Next

SortStructuredList(Users(), #PB_Sort_Ascending|#PB_Sort_NoCase, OffsetOf(User\User), #PB_String)

Debug "# Map triée (En fait c'est bien la liste qui est triée)"
ForEach Users()
  Debug "  "+Users()\User+" = "+Users()\Phone
Next
Debug "Mais ça fait illusion"

Debug #CRLF$+"#Acces direct au téléphone de Larache"
Debug "Larache = "+*Users("Larache")\Phone
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%