Delphi^A语法:有文档的、隐含的还是无文档的?

Delphi^A语法:有文档的、隐含的还是无文档的?,delphi,syntax,keyboard,character,Delphi,Syntax,Keyboard,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; 检查Ctrl+C和C

让我举个例子来解释。在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
s。您甚至可以执行
ShowMessage(^A)
,因此显然,
^A
被视为
字符


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

这是一个已知的未记录的功能。不过,最新的官方语法文档来自delphi 7。

这是很久以前的转义字符,它使您能够以更可读的方式获得控制字符的常量

const
  CtrlC = ^C;
begin
  Write(Ord(CtrlC));
end.
这定义了一个Char常量,其值为
#3
,然后在Borland Pascal 7中写入
3
,我记得几年前也见过它

我刚刚查看了Turbo Pascal 5.0和Borland Pascal 7.0语言指南,但没有找到,因此它似乎没有文档记录

编辑: 我记得这是Borland的事情,只是:它不是ISO Pascal标准的一部分(以前这是ANSI Pascal标准,感谢Sertac注意到这一点)

记录在中

SGI使用反斜杠作为转义字符,如下所示

更多编辑:我找到了它和

找到了:刚刚在的第37页找到了


--jeroen

任何人都可以使用未经证明的features@David:好的,我同意这个问题没有Windows API那么严重。其中一些错误洞察不喜欢,比如
^[
(Esc),
^-
(NUL)…我再次从SO那里学到了一些新的东西(在13次使用Delphi之后!)作为规范性参考(第7页)“^a”是什么类型的?对,它是字符,ord(^a)=1,^G是钟!@David,它的类型是“字符串文字”与您使用的
#1
相同。编译器将根据上下文将其视为字符或字符串。它在所有版本的Delphi中都有效,并且在许多(如果不是全部的话)版本的Turbo Pascal中都有效。@Rob Kennedy:+1,因为它是从Turbo Pascal继承的。我记得它在TP/BP的帮助系统中被描述得非常清楚。我在Turbo Pascal中使用过它5.5大约一百年前……在那个时候编写(^G)来通知用户错误的事情是很有用的……您仍然可以转到cmd.exe并“执行”ctrl+G:p@David,你让我想起了很多老东西…呵呵:D.顺便说一句,它一定是AnsiChar而不是char…对吧?自从1993年ANSI代表ISO标准终止了pascal语言以来,pascal语言上就没有ANSI标准了。关于ISO标准,请参阅我对Andreas问题的评论。这是一个很好的答案!谢谢!当有了几年前,在谈到简化(Delphi)编译器之前,这个功能以及类似(…)的东西被用作示例,提供FPC文档链接(IT)是的,如果主题移动或被拆分,链接可能会消失。我必须先“向上”,然后再转到主题/部分。更新链接。