gpt4 book ai didi

delphi - 为什么在 Delphi 中可以使用扬抑符作为控制字符,这是一个好主意吗?

转载 作者:行者123 更新时间:2023-12-03 15:05:45 24 4
gpt4 key购买 nike

我刚刚发现了一个关于 SO 的答案,语法很奇怪:

How do I include a newline character in a string in Delphi?

MyString := '你好,' + ^M + ^J + '世界!';

我已经使用 Delphi 好几年了,但我不知道可以使用扬抑符作为控制字符。

这只是早期 Delphi 或 Turbo Pascal 时代的遗留物吗?

现在应该使用它吗?

PS:我不是在询问有关换行符的建议,有 sLineBreak 和原始问题中讨论的其他方法。

最佳答案

不,这不是来自 Turbo Pascal 时代。它比 TP 早几十年,比 MS-DOS 早,甚至可能早于 UNIX。像第一个每秒 300 位的拨号调制解调器和 DEC VT-52 终端、PDP-8 机器上的 RT-8 操作系统和早期版本的 C 之类的旧东西。或者甚至可能更旧 - 尽管对我来说旧的一切都只是传说:-) .

“^”符号是“Ctrl”键的快捷方式。因此,传统表示法中的 ^C 代表 Microsoft 表示法中的 Ctrl+C。该符号在 MS-DOS 时代广泛用于文本模式菜单,例如前面提到的 Turbo Pascal、Norton Utilities、DOS Navigator 等。

根据我的内存,您可以考虑使用“^”来表示“减去 64”。
因此,由于 Chr(65)'A',那么 Chr(1) 将为 ^A
并且 ^@ 将是 #0 :-) 在 MS-DOS 中按 Ctrl+Shift+"2/@"实际上会产生 #0 进入 BIOS 键盘缓冲区:-)

^[ AFAIR 是 #27 又名 Esc(ape) char - 如果您运行 telnet.exe 您会看到它被提示为转义字符。

因此,Turbo Pascal 很久以前就选择遵循历史悠久的约定,然后从那时起就开始采用向后兼容的规则。就我个人而言,我认为 'bla-bla'^M^J'foo-baz' 文字比 'bla-bla'#13#10'foo-baz' 更像字符串code> 当你想要它在一行上时。当您的文字需要多行源代码时,使用加号构造值更合适。

遗憾的是,Delphi IDE 中的语法高亮在这种常量上毫无希望地被破坏。

关于delphi - 为什么在 Delphi 中可以使用扬抑符作为控制字符,这是一个好主意吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13062882/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com