SortStructuredArray()

Syntaxe

SortStructuredArray(Tableau(), Options, OffsetOf(Structure\Champs), TypeOf(Structure\Champs) [, Debut, Fin])
Description
Trie un tableau de structures.

Arguments

Tableau() Le tableau de structures à trier selon les options souhaitées.
Le tableau doit avoir une structure associée.
Options Peut être une combinaison des constantes suivantes:

#PB_Sort_Ascending : Trie le tableau par ordre croissant (les plus petites valeurs en tête)
#PB_Sort_Descending: Trie le tableau par ordre décroissant (les plus grandes valeurs en tête)

Et la constante suivante :
#PB_Sort_NoCase : Trie le tableau de chaînes de caractères en ne tenant pas compte de la casse (a=A, b=B etc..).
Par défaut le tri est sensible à la casse.
OffsetOf(Structure\Champs) OffsetOf() peut être utilisé pour obtenir l'offset du champ dans la structure associée au tableau.
TypeOf(Structure\Champs TypeOf() définit le type du champ de la structure qui sert pour le tri. Les types disponibles sont:
  #PB_Byte     : Le champ de la structure est un octet (.b)
  #PB_Word     : Le champ de la structure est un word (.w)
  #PB_Long     : Le champ de la structure est un long (.l)
  #PB_String   : Le champ de la structure est un string (.s ou $). Les strings fixes (fixed strings) ne sont pas supportées)
  #PB_Float    : Le champ de la structure est un flottant (.f)
  #PB_Double   : Le champ de la structure est un double (.d)
  #PB_Quad     : Le champ de la structure est un quad (.q)
  #PB_Character: Le champ de la structure est un caractère (.c)
  #PB_Integer  : Le champ de la structure est un integer (.i)
  #PB_Ascii    : Le champ de la structure est un caractère ascii (.a)
  #PB_Unicode  : Le champ de la structure est un caractère unicode (.u)
Debut, Fin (optionnel) Ne trie que la plage de 'Debut' à 'Fin'.

Valeur de retour

Aucune.

Remarques

Notes: Si un tableau n'est pas totalement plein, les éléments vides seront placés en tête dans l'ordre croissant et en fin dans l'ordre décroissant.
Les chaînes fixes (fixed strings) ne sont pas supportées dans les commandes de tri.

Nombres NaN (not a number) ne sont pas acceptés lors du tri car ils produisent des résultats aléatoires.

Exemple

  Structure Animal
    Nom$
    Vitesse.l
  EndStructure
  
  Dim Animaux.Animal(2)
  
  Animaux(0)\Nom$ = "Tigre"
  Animaux(0)\Vitesse = 10
  
  Animaux(1)\Nom$ = "Jaguar"
  Animaux(1)\Vitesse = 40
  
  Animaux(2)\Nom$ = "Zèbre"
  Animaux(2)\Vitesse = 30
  
  ; Trie le tableau en fonction du champ 'Nom$'qui est une chaîne de caractères (String) 
  ;
  SortStructuredArray(Animaux(), #PB_Sort_Ascending, OffsetOf(Animal\Nom$), TypeOf(Animal\Nom$))
  
  For k=0 To 2
    Debug Animaux(k)\Nom$+" - Vitesse : "+Str(Animaux(k)\Vitesse)
  Next
  
  ; Trie le tableau en fonction du champ 'Vitesse' qui est un long
  ;
  SortStructuredArray(Animaux(), #PB_Sort_Ascending, OffsetOf(Animal\Vitesse),  TypeOf(Animal\Vitesse))
  
  For k=0 To 2
    Debug Animaux(k)\Nom$+" - Vitesse : "+Str(Animaux(k)\Vitesse)
  Next

Voir aussi

SortArray(), SortList(), SortStructuredList() , RandomizeArray(), RandomizeList(), Random(), RandomSeed()

OS Supportés

Tous

<- SortList() - Sort Index - SortStructuredList() ->