Delphi ^ A语法:logging,暗示或无证?

让我以一个例子来解释。 在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; 

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

不过,在浏览官方的Delphi文档时 ,我找不到任何对此语法的引用。 但也许^A语法是如此普遍,它被理解为基础纯文本文件格式的一部分? 还是仅仅是Delphi编程语言的一个未公开的特征? (请注意,上述构造实际上是在RTL / VCL源代码中使用的,但是,Embarcadero和Embarcadero当然也可以使用未公开的特性,如果存在的话)。

这是从很久以前作为一个转义字符,使您有一个更可读的方式控制字符的常量。

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

这定义了一个char #3值,然后在Borland Pascal 7中写入3 ,我也记得在那之前几年看到它。

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

编辑:我记得这是一个Borland的东西,只是检查 :它不是ISO帕斯卡标准的一部分(以前这是ANSI帕斯卡标准,感谢塞尔塔克注意到这一点)。

它在Free Pascal文档中有logging 。

SGI使用反斜杠作为转义字符, 按照他们的文档 。

更多编辑:我发现它在delphi在果壳和Delphi基础网站logging 。

发现它:在Turbo Pascal 3参考手册的第37页find它。

–jeroen

这是一个已知的未logging的function。 但是,再次,最新的官方语法文档是从delphi7。