Lorsque Delphi appelle un gestionnaire d'événements, les anciennes valeurs des variables locales sont effacées. Et si nous voulons savoir combien de fois un bouton a été cliqué? Nous pourrions faire persister les valeurs en utilisant une variable de niveau unité, mais c'est généralement une bonne idée de réserver des variables de niveau unité uniquement pour le partage d'informations. Ce dont nous avons besoin sont généralement appelés variables statiques ou constantes typées dans Delphi.
Les constantes typées peuvent être comparées à des variables-variables initialisées dont les valeurs sont définies lors de l'entrée dans leur bloc (généralement le gestionnaire d'événements). Une telle variable n'est initialisée que lorsque le programme démarre. Après cela, la valeur d'une constante typée persiste entre les appels successifs à leurs procédures.
L'utilisation de constantes typées est un moyen très simple d'implémenter des variables initialisées automatiquement. Pour implémenter ces variables sans constantes typées, nous devrons créer une section d'initialisation qui définit la valeur de chaque variable initialisée.
Bien que nous déclarions des constantes typées dans la section const d'une procédure, il est important de se rappeler qu'elles ne sont pas des constantes. A tout moment de votre application, si vous avez accès à l'identifiant d'une constante typée vous pourrez modifier sa valeur.
Pour voir les constantes tapées au travail, placez un bouton sur un formulaire vierge et affectez le code suivant au gestionnaire d'événements OnClick:
procédure TForm1.Button1Click (expéditeur: TObject); const clics: Entier = 1; // pas une vraie constante commencer Form1.Caption: = IntToStr (clics); clics: = clics + 1; fin;
Notez que chaque fois que vous cliquez sur le bouton, les incréments de légende se forment régulièrement.
Essayez maintenant le code suivant:
procédure TForm1.Button1Click (expéditeur: TObject); var clics: Entier; commencer Form1.Caption: = IntToStr (clics); clics: = clics + 1; fin;
Nous utilisons maintenant une variable non initialisée pour le compteur de clics. Notez cette valeur étrange dans la légende des formulaires après avoir cliqué sur le bouton.
Vous devez convenir que l'idée de constantes modifiables semble un peu étrange. Dans les versions 32 bits de Delphi, Borland a décidé de décourager leur utilisation, mais les prend en charge pour le code hérité Delphi 1.
Nous pouvons activer ou désactiver les constantes typées assignables sur la page Compilateur de la boîte de dialogue Options du projet.
Si vous avez désactivé les constantes typées assignables pour un projet donné, lorsque vous essayez de compiler le code précédent, Delphi vous donnera une erreur «Le côté gauche ne peut pas être attribué à» lors de la compilation. Vous pouvez cependant créer une constante typée assignable en déclarant:
$ J + const clics: Entier = 1; $ J-
Par conséquent, le premier exemple de code ressemble à:
procédure TForm1.Button1Click (expéditeur: TObject); const $ J + clics: Entier = 1; // pas une vraie constante $ J- commencer Form1.Caption: = IntToStr (clics); clics: = clics + 1; fin;