Const/fr

From Lazarus wiki
Jump to navigationJump to search

Deutsch (de) English (en) español (es) suomi (fi) français (fr) 中文(中国大陆)‎ (zh_CN)

Le mot-clé const a trois utilisations dans un programme Pascal :

  • commencer une section de déclaration de constante
  • déclarer un paramètre const pour une routine
  • déclarer une routine avec un nombre variable de paramètres passés via un tableau de taille variable d'éléments de différents types.

Section Const

La déclaration const dans un programme Pascal est utilisée pour informer le compilateur que certains identificateurs sont déclarés constants, ils sont initialisés avec une valeur spécifique au moment de la compilation, contrairement à une variable qui est initialisée au moment de l'exécution.

Toutefois, le réglage par défaut dans Free Pascal est de permettre à des identifiants déclarés const d'être ré-affectés. Pour les rendre non modifiables, les directives du compilateur {$J} (forme courte) ou {$WriteableConst} (forme longue) doivent être utilisée, en spécifiant {$J-} ou {$WriteableConst OFF}.

La déclaration d'une constante peut prendre deux formes: constante typée ou non typée.

Constante non typée

Une constante non typée n'est affectée qu'au moment de sa déclaration, sa valeur ne peut pas être changée durant l'exécution du programme. Pour ces constantes, seuls des types simples peuvent être employés, c'est le compilateur qui détermine le type.
Exemples de déclaration non typées :

 const
   Nombre = 210;       // Constante de type Integer
   Reel = 2.1;         // Constante de type virgule flottante
   Texte = 'Hello';    // Constante de type String
   lettre = 'F';       // Constante de type Char

Constante typée

Un type est associé à la constante dans la déclaration, il devient possible de définir, outre des constantes de type simple, des constantes de type complexe tels que des enregistrements ou des tableaux.
Contrairement aux constantes non typées, les constantes peuvent être modifiées en cours d'exécution, il s'agit donc plutôt d'une initialisation de variable que d'une véritable constante. Cela se rapproche des déclarations statiques d'autres langages.
Exemple de constantes typées :

 const
   SeuilTemp: Single = 18.0;
   // constante Array de 6 lettres
   Alpha: array[1..6] of Char = ('A', 'B', 'C', 'D', 'E', 'F');

Paramètre Const

Un paramètre de routine (fonction ou procédure) peuvent être déclarés const. Tout affectation à un paramètre const à l'intérieur de la routine aboutit à une erreur à la compilation "Can't assign values to const variable". La déclaration d'un paramètre const donne la possibilité au compilateur de faire des optimisations qu'il ne pourrait faire autrement, comme passer le paramètre par référence au lieu d'appliquer la sémantique du passage par valeur. Un paramètre const ne peut être passé à une autre routine qui demande paramètre variable.

Tableau de Const

Une routine peut déclarer un paramètre comme array of const. Ceci permet à la routine de prendre effectivement un nombre variable de paramètre de différents types à travers un paramètre tableau à une seule dimension. A l'exécution, quand la routine est appelée, les éléments réels du tableau sont passés dans des enregistrement variants de type TVarRec. La routine peut utiliser High() pour déterminer l'indice maximal du tableau (qui donne le nombre d'éléments en retranchant 1 car l'indice minimal donné par Low() étant toujours égal à 0), et examiner le champ VType de chaque élément TVarRec, pour déterminer le type contenu. Seuls des types simples peuvent être passés de cette façon, pas de type enregistrement, les classes et les interfaces peuvent l'être. Vous créez un tableau de const en y plaçant les composants dans []. Par exemple :

function MyFunction( array of const ) : Boolean;
  ...

MyFunction( [10, 'global', True, my_var] );

Cette fonctionnalité est uniquement disponible dans le mode compilateur ObjFPC ou Delphi.

Voir aussi