Dim


Syntax
Dim nom.<type>(<expression>, [<expression>], ...)
Description
Dim est utilisé pour créer un nouveau tableau.

Un tableau peut être composé d'éléments de type basique connus sous PureBasic, incluant les et les types définis par l'utilisateur.
Attention : Les éléments d'un tableau doivent tous être de même type.
Une fois le tableau créé, il peut être redimensionné avec ReDim.
Pour afficher toutes les commandes utilisées pour gérer les tableaux, reportez-vous à la bibliothèque Array.

Les tableaux sont alloués dynamiquement ce qui signifie que leur dimensionnement peut se faire à partir d'une variable ou d'une expression.

Attention, la numérotation des éléments dans PureBasic (comme dans les autres BASIC) commence à 0. Par exemple, le tableau Dim(10) aura 11 éléments allant de 0 à 10.
Ce comportement est différent pour les tableaux statiques spécifiques aux structures. Les tableaux statiques utilisent des crochets "[]", par exemple TabStatic[2] ne comporte que 2 éléments de 0 à 1 et les fonctions de la bibliothèques Array ne fonctionnent pas avec eux.

Les tableaux sont toujours locaux par défaut, donc pour accéder à partir d'une procedure à un tableau défini dans le code source principal du programme, l'utilisation de Global ou Shared est requise. Il est également possible de passer un tableau en paramètre d'une procédure à l'aide du mot clef Array. Il sera passé "par référence" (ce qui signifie que le tableau ne sera pas copié, et les fonctions dans la procédure manipulerons le tableau original).

Pour effacer le contenu complet d'un tableau et libérer la mémoire qu'il occupe, utilisez FreeArray().

Si Dim est utilisé sur un tableau existant, il réinitialise son contenu à zéro.

Utilisez la commande Swap pour permuter le contenu de tableaux rapidement.

Note: La vérification des accès à un tableau est effectuée uniquement quand le débogueur est activé.

Exemple

  Dim MonTableau(41)
  MonTableau(0) = 1
  MonTableau(1) = 2 

Exemple: Tableau à dimensions multiples

  Dim TableauMultiple.b(NbColonnes, NbLignes)
  TableauMultiple(10, 20) = 10
  TableauMultiple(20, 30) = 20

Exemple: Tableau en paramètre d'une procédure

  Procedure fill(Array Nombres(1), Longueur)  ; Le 1 représente le nombre de dimensions du tableau
    For i = 0 To Longueur
      Nombres(i) = i
    Next i
  EndProcedure
  
  Dim Nombres(10)
  fill(Nombres(), 10)  ; Le tableau Nombres() est passé en paramètre
  
  Debug Nombres(5)
  Debug Nombres(10)

Syntax
ReDim nom.<type>(<expression>, [<expression>], ...) 
Description
ReDim permet de redimensionner un tableau déjà déclaré tout en préservant son contenu. La nouvelle taille peut être plus grande ou plus petite, mais le nombre de dimensions ne peut pas être modifié.

Si ReDim est utilisé sur un tableau à plusieurs dimensions, seule la dernière dimension peut être changée.

Exemple: Une dimension

  Dim MonTableau.l(1) ; nous avons 2 éléments
  MonTableau(0) = 1
  MonTableau(1) = 2
  
  ReDim MonTableau(4) ; Maintenant nous avons 5 éléments
  MonTableau(2) = 3
  
  For k = 0 To 2
    Debug MonTableau(k)
  Next

Exemple: Plusieurs dimensions

  Dim MonTableau.l(1,1,1) ; 3 dimensions et 2 éléments par dimension
  
  ReDim MonTableau(1,1,4) ; OUI seule la dernière dimension peut être changée.
  ;ReDim MonTableau(4,1,1) ; NON
  ;ReDim MonTableau(1,4,1) ; NON
  MonTableau(1,1,4) = 3