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。