Difference between revisions of "Const/fr"

From Lazarus wiki
Jump to navigationJump to search
m
Line 6: Line 6:
 
* déclarer une [[Routine/fr|routine]] avec un nombre variable de paramètres passés via un tableau de taille variable d'éléments de différents types.
 
* déclarer une [[Routine/fr|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 ==
+
= Section Const =
 
La déclaration '''const''' dans un [[Program/fr|programme]] [[Pascal]] est utilisée pour informer le [[Compiler/fr|compilateur]] que certains [[Identifier/fr|identificateurs]] sont déclarés [[Constant/fr|constants]], ils sont initialisés avec une valeur spécifique au [[Compile time/fr|moment de la compilation]], contrairement à une [[Var/fr|variable]] qui est initialisée au [[Run time/fr|moment de l'exécution]].
 
La déclaration '''const''' dans un [[Program/fr|programme]] [[Pascal]] est utilisée pour informer le [[Compiler/fr|compilateur]] que certains [[Identifier/fr|identificateurs]] sont déclarés [[Constant/fr|constants]], ils sont initialisés avec une valeur spécifique au [[Compile time/fr|moment de la compilation]], contrairement à une [[Var/fr|variable]] qui est initialisée au [[Run time/fr|moment de l'exécution]].
  

Revision as of 08:11, 29 December 2016

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}.

Dans certains compilateurs Pascal, la déclaration Const est utilisée pour définir des variables qui sont initialisées au moment de la compilation avec une certaine valeur et que ces variables peuvent changer quand le programme s'exécute. Cela peut être utilisé pour initialiser des tableaux au moment de la compilation au lieu de définir ces valeurs quand à l'exécution.

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