_PRESERVE
DESCRIPTION.
L'instruction _PRESERVE permet de préserver la valeur des items lors du redimensionnement d'un tableau de données.
SYNTAXES.
REDIM _PRESERVE nom?
REDIM _PRESERVE nom AS type
REDIM _PRESERVE AS type noma, noma, ... , nomn
REMARQUES.
nom doit être le nom d'une variable ou d'un tableau de données existant.
L'instruction _PRESERVE doit toujours être précédée de l'instruction REDIM.
L'instruction _PRESERVE doit être placée avant le mot-clé SHARED, s'il est utilisé, dans la nouvelle déclaration du tableau de données. Par exemple : REDIM _PRESERVE SHARED nom AS type.
Si le tableau de données n'a pas été déclaré, moins de 11 items, ou s'il a été déclaré avec l'instruction DIM, la métacommande $DYNAMIC doit être mentionnée avant son utilisation ou sa déclaration pour pouvoir le redimensionner et conserver les valeurs de ses items.
Si l'instruction _PRESERVE est absente, toutes les valeurs des items d'un tableau de données redimensionné avec l'instruction REDIM seront réinitialisées à 0 pour les types numériques, à une chaine vide pour le type STRING ou à une chaine de ? espaces avec le type STRING * ?.
Si le tableau de données obtient plus d'items après le redimensionnement, les items avec un index supérieurs seront initialisé avec 0 pour les types numériques, à une chaine vide pour le type STRING ou à une chaine de ? espaces avec le type STRING * ?.
Si le tableau de données obtient moins d'items après le redimensionnement, les items avec un index supérieurs seront perdues.
Si la plage d'index d'un tableau de données est modifiée par une instruction REDIM, l'instruction _PRESERVE placera les valeurs de ses items avec les nouveaux index dans le même ordre que précédemment.
L'instruction _PRESERVE ne doit pas être utilisée si le nombre de dimensions du tableau de données est modifié par l'instruction REDIM.
Si le type d'une variable ou d'un tableau de données n'est pas indiqué, elle/il est du type SINGLE (!).
RUBRIQUE.
Les tableaux de données pour plus de détails sur la création et l'utilisation des tableaux de données.
EXEMPLES.
REDIM LST_Durees(60) AS INTEGER
REM $DYNAMIC
DIM LST_Scores(15) AS INTEGER
DIM LST_Cotes(15) AS INTEGER
FOR kvaleur = 0 TO 60 : LST_Durees(kvaleur) = 60 - kvaleur : NEXT kvaleur
FOR kvaleur = 0 TO 15 : LST_Scores(kvaleur) = RND * 100 : NEXT kvaleur
FOR kvaleur = 0 TO 15 : LST_Cotes(kvaleur) = RND * 10 : NEXT kvaleur
PRINT "Avant de redimensionner les tableaux : "
GOSUB LAB_Afficher
REDIM _PRESERVE LST_Durees(30) AS INTEGER
REDIM _PRESERVE LST_Scores(25 TO 45) AS INTEGER
REDIM LST_Cotes(15) AS INTEGER
PRINT "Apres de redimensionner les tableaux : "
GOSUB LAB_Afficher
END
LAB_Afficher:
FOR kvaleur = 0 TO 5 :
PRINT kvaleur,
kindex = LBOUND (LST_Durees) + kvaleur : PRINT kindex; LST_Durees(kindex),
kindex = LBOUND (LST_Scores) + kvaleur : PRINT kindex; LST_Scores(kindex),
kindex = LBOUND (LST_Cotes) + kvaleur : PRINT kindex; LST_Cotes(kindex)
NEXT kvaleur
RETURN
retourne :
Avant de redimensionner les tableaux :
0 60 71 7
1 59 53 3
2 58 17 1
3 57 84 7
4 56 47 5
5 55 29 8
Apres de redimensionner les tableaux :
0 60 0 0
1 59 0 0
2 58 0 0
3 57 0 0
4 56 0 0
5 55 0 0
Votre aide est précieuse pour améliorer ce site, alors n'hésitez pas à faire part de
Dans la RETROGICIEL vous trouvez des suggestions simples et classiques pour
TESTER - DÉCOUVRIR - PRATIQUER - APPROFONDIR - EXPLORER
avec un exemple de résolution à télécharger pour vous inspirer.