6
votes

Pourquoi le signe circonflexe peut-il être utilisé pour des caractères de contrôle à Delphes et est-ce une bonne idée?

Je viens de trouver une réponse à la suite d'une syntaxe curieuse:

Comment incluez-moi un Personnage de Newline dans une chaîne à Delphi?

mystring: = 'Bonjour,' + ^ m + ^ j + 'World!';

J'utilise Delphi depuis plusieurs années maintenant, mais je ne savais pas que vous pouvez utiliser le signe circonflex pour les personnages de contrôle.

est-ce juste une gauche sur le début des jours Delphes ou Turbo Pascal?

devrait-il être utilisé de nos jours?

PS: Je ne demande pas de conseils sur les personnages de la ligne de rupture, il y a Slinebreak et d'autres méthodes telles que discutées dans la question initiale.


10 commentaires

Jamais jamais vu cela avant, +1 pour une bonne question


Je viens de remarquer que c'est un duplicata: Stackoverflow.com/questions/4915941/...


Il est laissé de Turbo Pascal.


Cette syntaxe n'est-elle pas facilement confondue avec des pointeurs? Ou sont des pointeurs ^ m et ^ j?


@Pieterb et c'est pourquoi les noms de variables de caractère unique ne sont pas une bonne idée. ;-)


@Pieterb Non, ce n'est pas la syntaxe du pointeur. Vous pouvez utiliser ptype = ^ de type dans une déclaration de type et des pointeurs de désarence dans le code à l'aide de MyPoinger ^.


Obtenir également l'adresse d'une voiture utilise la syntaxe @.


@Pieterb mais vous ne pouvez pas utiliser de type dans une section const. Vous ne pouvez pas également utiliser une section constante dans une section de type. Cela peut sembler ambigu, mais sur une inspection plus étroite, ce n'est pas le cas.


Bien sûr, vous pouvez utiliser un type dans une section const si vous utilisez la constante constante: TsomeType = Syntaxe :).


@golez Les noms de caractère unique pour les variables de boucle locale sont tout à fait. J'utiliserais toujours i, j et k comme noms de variable de boucle pour une matrice mul.


3 Réponses :


0
votes

Oui, cela reste laissé des jours TP. Vous pouvez également écrire votre déclaration comme celle-ci xxx

qui est probablement moins obscure et plus facilement compréhensible que d'utiliser ^ m et ^ j. Bien sûr, vous devriez vraiment définir des constantes xxx


2 commentaires

Vous avez Slinebreak si nous parlons de la définition de constantes ;-)


En utilisant également "Slinebreak", le code "Cross Platform Caout", car il a une signification différente sur Windows et Mac :)



3
votes

Oui c'est un héritage des jours de jequois.

Et non, vous ne devriez pas entrer dans l'habitude d'utiliser cette fonctionnalité. N'oubliez pas que le code est lu le plus souvent qu'il n'est écrit. Pensez toujours à vos lecteurs qui ne sauront probablement pas ce que cette syntaxe signifie.


3 commentaires

Les bons ol 'jours de jedais je présume? (Je n'étais pas assez vieux pour coder à l'époque, mais cela ressemble au passé du développement Delphes était génial'r que c'est maintenant)


@Jeff, vous avez raison à ce sujet, mais cette construction est à partir des jours précédant que Delphi était Delphi. :)


et avant que Pascal était turboré!



9
votes

Non, il ne s'agit pas des jours turbo Pascal. Cela fait de décennies avant TP, et avant MS-DOS et probablement même avant UNIX. Quelque chose de vieux comme des modems de numérotation de 300 bits par seconde et du terminal Dec VT-52, RT-8 OS sur la machine PDP-8 et une version précoce de C. ou peut-être même plus âgée - bien que tout soit plus âgé pour moi, c'est de simples légendes :-) .

"^" Le signe est un raccourci pour la touche "Ctrl". Donc, ^ c dans la notation traditionnelle signifie ctrl + C dans la notation Microsoft. Cette notation a été considérablement utilisée pour les menus TextMode dans MS-DOS Times, comme dans les Turbo Pascal susmentionné, Norton Utilities, Dos Navigator, etc.

Sortir de ma mémoire, vous pouvez envisager "^" pour "Soustrait 64".
Ainsi, comme chr (65) est 'a' alors chr (1) serait ^ a .
Et ^ @ serait # 0 :-) Afair dans MS-DOS Times En appuyant sur Ctrl + Shift + "2 / @" produirait réellement # 0 dans le tampon de clavier BIOS :-)

^ [serait afairement être # 27 AKA ESC (APE) Char - et si vous exécutez telnet.exe Vous le verriez que vous le verriez comme le caractère d'échappement.

Donc, Turbo Pascal il y a longtemps, choisi de suivre la convention hésitée, puis des règles de compatibilité en retard se sont engagées depuis. Personnellement, je prends 'bla-bla' ^ m ^ j'foo-baz ' littéral plus de chaîne de chaîne que ' bla-bla '# 13 # 10'foo-baz' quand vous le souhaitez sur une ligne. Et la construction de la valeur avec Plus est mieux adaptée lorsque votre littéral prend plusieurs lignes sources.

La pitié est que la mise en évidence de la syntaxe dans l'IDE Delphi est désespérément brisée sur ce type de constantes.


0 commentaires