Delphi ^une syntaxe: documentée, implicite ou non documentée?
Laissez-moi vous expliquer par un exemple. En Delphes, 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 du clavier Ctrl+C et CTRL + V. En fait, la même syntaxe fonctionne pour Ctrl + A, où A est n'importe quel caractère, et-bien sûr-vous pouvez également utiliser une instruction case
au lieu de if
s. Vous pouvez même faire ShowMessage(^A)
, donc, apparemment, ^A
est considéré comme un char
.
Cependant, en parcourant la documentation officielle de Delphi , Je ne trouve aucune référence à cette syntaxe. Mais peut-être que le ^A
la syntaxe est si commune qu'elle est comprise comme faisant partie du format de fichier texte brut sous-jacent? Ou est-ce simplement une fonctionnalité non documentée du langage de programmation Delphi? (Notez que les constructions ci-dessus sont réellement utilisées dans le code source RTL/VCL. Mais, bien sûr, Embarcadero, et Embarcadero seul, est autorisé à utiliser des fonctionnalités non documentées, le cas échéant.)
2 réponses
C'est depuis longtemps comme un caractère d'échappement pour vous permettre d'avoir des consts pour les caractères de contrôle d'une manière plus lisible.
const
CtrlC = ^C;
begin
Write(Ord(CtrlC));
end.
Cela 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 aussi.
Je viens de vérifier les guides de langues Turbo Pascal 5.0 et Borland Pascal 7.0, mais je ne pouvais pas le trouver, donc il semble non documenté.
Modifier: Je me souviens que C'était un truc de Borland, et juste checked : Il ne fait pas partie de la norme ISO Pascal (auparavant C'était la norme ANSI Pascal, merci Sertac de l'avoir remarqué).
Il est documenté dans le Free Pascal documentation.
SGI utilise la barre oblique inverse comme caractère d'échappement, comme selon leurs documents .
Plus Edit:, je l'ai trouvé documenté en Delphi, en un Mot et le Delphi Bases site.
Trouvé: Viens de trouver il se trouve à la page 37 du manuel de référence Turbo Pascal 3 .
--jeroen
Ceci est une fonctionnalité non documentée connue. Mais là encore, la dernière documentation de syntaxe officielle est de delphi 7.