【发布时间】:2011-06-22 09:41:47
【问题描述】:
让我通过一个例子来解释。在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 是 any 字符,而且——当然——你也可以使用case 语句来代替ifs。你甚至可以使用ShowMessage(^A),所以,显然^A 被认为是char。
但是,在浏览the official Delphi documentation 时,我找不到任何对这种语法的引用。但也许^A 语法是如此普遍以至于它被理解为底层纯文本文件格式的一部分?或者它只是 Delphi 编程语言的一个未记录的特性? (请注意,上述结构实际上用于 RTL/VCL 源代码。但是,当然,Embarcadero 和 Embarcadero 单独允许使用未记录的功能,如果存在的话。)
【问题讨论】:
-
任何人都可以使用未记录的功能
-
@David:好的,我同意问题并不像 Windows API 的情况那么严重。
-
其中一些,错误洞察不喜欢,比如
^[(Esc)、^@(NUL).. -
我又从 SO 中学到了一些新东西(在 13 岁之后使用 Delphi!)
-
Pascal ISO 7185:1990 具有 ISO/IEC 646 作为规范性参考(第 7 页),最初定义为 C0 control codes。也许这是一种暗示它的方式。
标签: delphi syntax keyboard character