Syntaxe

Déclare un tableau à une ou plusieurs dimensions, dont les bornes sont incluses. UNDIM le vide.

DIM <name>(<size>[, <size>…]) [AS <type>] [= [<value>, …]]
DIM <name>[<size>[, <size>…]] [AS <type>] [= [<value>, …]]
UNDIM <name>[]

S’écrit aussi : UNDIM

Les éléments

<name>Le nom du tableau. Un nom qui finit par $ fait partir chaque case de "" au lieu de 0.
<size>Le dernier indice valide d'une dimension, et non le nombre de cases. N'importe quelle expression : DIM grid(width, height).
<type>Facultatif. Un type de nombre ou de texte (integer, uint8, float…) convertit chaque écriture ; un type d'enregistrement fait de chaque case un enregistrement.
<value>Liste facultative de valeurs de départ, entre crochets, rangées à partir de l'indice 0. Tableaux à une dimension seulement ; une liste plus longue agrandit le tableau.

À savoir

  • DIM a(10) a 11 cases, numérotées de 0 à 10, comme en AGK, DarkBASIC et PureBasic. a.length donne le dernier indice, 10.
  • a(i, j), a[i, j] et a[i][j] désignent la même case.
  • Aucun contrôle des bornes. Lire au-delà du dernier indice ne donne aucune valeur (Str affiche undefined) ; écrire au-delà agrandit le tableau sans prévenir.
  • DIM sur un nom qui existe déjà crée un nouveau tableau et perd les anciennes valeurs. Pour redimensionner en gardant les valeurs, affectez .length.
  • Un DIM en haut du programme est visible dans chaque FUNCTION, même dans un programme avec DO … LOOP. Un DIM dans une FUNCTION appartient à cet appel.
  • UNDIM a() avec des parenthèses compile en un programme qui ne démarre pas. Écrivez UNDIM a[].
  • GLOBAL DIM g(2) ne fonctionne pas : l'usage suivant de g(…) est refusé comme commande inconnue. Écrivez un simple DIM en haut du programme.
  • DIM x AS integer, sans taille, compile mais le programme ne démarre pas. Une valeur typée seule se déclare avec x AS integer.

Exemple

DIM scores(4)scores(0) = 10scores(4) = 50Console(Str(scores.length) + " " + Str(scores(0) + scores(4)))   ' 4 60DIM grid(2, 3) AS integergrid(1, 2) = 7.9Console(Str(grid[1][2]))   ' 7UNDIM scores[]Console(Str(scores.length))   ' -1
Dans le manuel : Tableaux, listes et maps