Pregunta Delphi ^ Una sintaxis: documentada, implícita o indocumentada?


Déjame explicarte con un ejemplo. En Delphi, puedes escribir

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;

para comprobar si hay comandos de teclado Ctrl + C y Ctrl + V. De hecho, la misma sintaxis funciona para Ctrl + A, donde A es alguna personaje, y, por supuesto, también puede usar un case declaración en lugar de ifs. Incluso puedes hacer ShowMessage(^A), entonces, aparentemente, ^A es considerado un char.

Sin embargo, al navegar la documentación oficial de Delphi, No puedo encontrar ninguna referencia a esta sintaxis. Pero tal vez el ^A la sintaxis es tan común que se entiende como una parte del formato de archivo de texto plano subyacente? ¿O es simplemente una característica no documentada del lenguaje de programación Delphi? (Tenga en cuenta que las construcciones anteriores se utilizan en realidad en el código fuente RTL / VCL. Pero, por supuesto, Embarcadero y Embarcadero solo pueden utilizar funciones no documentadas, si existe alguna).


38
2018-02-06 20:37


origen


Respuestas:


Esto es desde hace mucho tiempo como un personaje de escape que te permite tener ventajas para los personajes de control de una manera más legible.

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

Esto define una constante de Char con valor #3, luego escribe 3 en Borland Pascal 7, y recuerdo haberlo visto años antes también.

Acabo de consultar las guías de idiomas de Turbo Pascal 5.0 y Borland Pascal 7.0, pero no pude encontrarla, por lo que parece no documentada.

Editar:  Recuerdo que esto era algo de Borland, y solo comprobado: no es parte del estándar ISO Pascal (anteriormente esto era ANSI Pascal Standard, gracias a Sertac por notar esto).

Eso  es documentado en el Documentación gratuita de Pascal.

SGI usa la barra invertida como carácter de escape, como por sus documentos.

Más Editar: Lo encontré documentado en Delphi in a Nutshell y el Sitio de Delphi Basics.

Lo encontré: Acabo de encontrarlo en la página 37 de la Turbo Pascal 3 Manual de referencia.

--jeroen


28
2018-02-06 22:08



Esta es una característica conocida no documentada. Pero, una vez más, la última documentación de sintaxis oficial es del delphi 7.


3
2018-02-06 21:27