Delphi ^ Une syntaxe: Documentée, implicite ou non documentée?

Laissez-moi vous expliquer par un exemple. Dans Delphi, vous pouvez écrire

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char); begin if Key = ^C then ShowMessage('The user wants to copy something.') else if Key = ^V then ShowMessage('The user wants to paste.') end; 

pour vérifier les commandes clavier Ctrl + C et Ctrl + V. En fait, la même syntaxe fonctionne pour Ctrl + A, où A est un caractère quelconque et, bien sûr, vous pouvez également utiliser une instruction de case plutôt if s. Vous pouvez même faire ShowMessage(^A) , donc, apparemment, ^A est considéré comme un caractère.

Cependant, lorsque vous parcourez la documentation Delphi officielle , je ne trouve aucune référence à cette syntaxe. Mais peut-être que la syntaxe ^A est si commune qu’elle est comprise comme faisant partie du format de fichier texte en clair sous-jacent? Ou est-ce simplement une fonctionnalité non documentée du langage de programmation Delphi? (Notez que les constructions ci-dessus sont en fait utilisées dans le code source RTL / VCL. Mais, bien sûr, Embarcadero et Embarcadero seul sont autorisés à utiliser des fonctionnalités non documentées, le cas échéant.)

C’est un caractère d’échappement utilisé depuis longtemps pour vous permettre d’avoir des const pour les caractères de contrôle de manière plus lisible.

 const CtrlC = ^C; begin Write(Ord(CtrlC)); end. 

Ceci définit une constante Char avec la valeur #3 , puis écrit 3 dans Borland Pascal 7, et je me souviens l’avoir vu des années auparavant.

Je viens de vérifier les guides des langages Turbo Pascal 5.0 et Borland Pascal 7.0, mais je n’ai pas pu le trouver, il semble donc non documenté.

Edit: je me souviens que c’était une chose de Borland, et que je viens de vérifier : cela ne fait pas partie de la norme ISO Pascal (anciennement c’était la norme ANSI Pascal, merci à Sertac de l’avoir remarqué).

Il est documenté dans la documentation de Free Pascal .

SGI utilise la barre oblique inverse comme caractère d’échappement, conformément à leurs documents .

Plus Edit: Je l’ai trouvé documenté dans Delphi in a Nutshell et le site Delphi Basics .

Trouvé: Vous l’avez trouvé à la page 37 du Turbo Pascal 3 Reference Manual .

–jeroen

Ceci est une fonctionnalité non documentée connue. Mais encore une fois, la dernière documentation de syntaxe officielle provient de delphi 7.