Delphi ^ A语法:记录,隐含或无证?

And*_*and 39 delphi keyboard syntax character

让我举个例子来解释一下.在Delphi中,您可以编写

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;
Run Code Online (Sandbox Code Playgroud)

检查Ctrl + C和Ctrl + V键盘命令.实际上,相同的语法适用于Ctrl + A,其中A是任何字符,当然 - 您也可以使用case语句而不是ifs.你甚至可以做ShowMessage(^A),所以,显然,^A被认为是char.

但是,在浏览官方Delphi文档时,我找不到任何对此语法的引用.但也许^A语法是如此常见,以至于它被理解为底层纯文本文件格式的一部分?或者它只是Delphi编程语言的一个未记录的功能?(请注意,上述结构实际上是在RTL/VCL源代码中使用的.但是,当然,只有Embarcadero和Embarcadero才允许使用未记录的功能,如果有的话.)

Jer*_*ers 29

这是很久以前的一个转义字符,使您能够以更易读的方式为控制字符提供consts.

const
  CtrlC = ^C;
begin
  Write(Ord(CtrlC));
end.
Run Code Online (Sandbox Code Playgroud)

这定义了一个带有值的Char常量#3,然后3在Borland Pascal 7中写入,我记得在它之前几年也看过它.

我刚检查了Turbo Pascal 5.0和Borland Pascal 7.0语言指南,但找不到它,所以它似乎没有记录.

编辑: 我记得这是Borland公司的事,只是检查:这是不是ISO帕斯卡尔标准的一部分(以前这是ANSI Pascal之间,感谢Sertac用于察觉这一点).

中记录的Free Pascal文档.

根据他们的文档,SGI使用反斜杠作为转义字符.

更多编辑:我发现它在Delphi的NutshellDelphi Basics站点中有记录.

找到它:刚刚在Turbo Pascal 3参考手册的第37页找到它.

--jeroen