Delphi XE4 - 八进制常数像十进制常数一样工作

标签 delphi delphi-xe4

今天我正在对我的队友进行代码审查。它是普通的旧 Delphi,版本 XE4。我检测到这样的代码:

cWin_CountryIdsSet: array[0..243] of integer = (499, 688, 040, ...)

这是十进制 ID 列表,但其中一个 - 040 - 看起来像八进制,对吗?我立即告诉他这个问题,但他回答说:“不,它的工作方式就像小数,你自己看看”。他是对的!我写了一个小例子:

Writeln(080);
if 80 = 080 then Writeln('They are equal');
Writeln(IntToStr(080));

它显示:

80
They are equal
80 

所以这意味着这个Embarcadero的explanation about integer constants目前是不正确的。尤其是这句话是错误的:

All constants with an initial zero are taken to be octal. If an octal constant contains the illegal digits 8 or 9, an error is reported. Octal constants exceeding 037777777777 are truncated.

我没有收到任何有关使用数字 8 的错误,并且编译器忽略了前导 0。有人可以解释一下这里谁错了以及现在如何在 Delphi 中使用八进制常量吗?

提前谢谢您!

更新:Delphi 不支持八进制常量的显式声明。所以,这是多语言开发的诅咒,我错误地打扰了我的队友。谢谢大家的回答!

最佳答案

您链接到的是C++引用,而不是Delphi引用。 Delphi 不支持八进制文字,仅支持十进制和十六进制文字。

关于Delphi XE4 - 八进制常数像十进制常数一样工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23214528/

相关文章:

android - 如何使用 FireMonkey for Delphi XE5 检测/处理屏幕旋转

delphi - TV虚拟字符串树。如何拖放到ROOT级别?

delphi - 如何将 Unicode 字符串转换为 AnsiString?

android - 在 Android 上使用 TPopup 代替 showmessage

c# - .net 类型在类型库中被 IUnknown 替换

sqlite - 在 TSQLQuery 中使用 as

Delphi XE4 IDE,如何始终隐藏对象检查器的底部 Pane

delphi - TListView 记录按需加载

delphi - 从本地客户端连接中检索带有路径的服务器数据的SQL SELECT

delphi - 我应该使用什么来以编程方式在 Delphi 中生成打印输出/报告