Delphi中的C风格十六进制 - 未记录的功能?

时间:2011-02-15 18:22:13

标签: delphi delphi-2009 hex

我偶然注意到以下代码

var
  I: Integer;

begin
  I:= StrToInt('0xAA');
  ShowMessage(IntToStr(I));  // shows 170 = $AA
end;

在Delphi 2009中没问题.BTW该功能帮助我从C头文件中提取十六进制常量。

我想知道使用该功能是否可以,或者该功能即将在未来版本中“修复”?

2 个答案:

答案 0 :(得分:12)

这是一项功能,您可以信赖它。 Turbo Pascal进入Delphi后发生的哲学变化之一是承认Delphi生活在一个以C为主导的世界中,通过优雅地接受或容忍C-isms而不是忽略它们并迫使Delphi开发人员获得更多收益把它整理出来。 Rob提到的与C ++ Builder交互是一个因素,但Delphi最初是为Windows设计的,而Windows在Windows API中有很多C语言工件。

我认为术语“阻抗不匹配”可能适用于此 - 它很简单,可以消除Delphi十六进制处理与“世界其他地方”之间的阻抗不匹配,所以我们做到了。

答案 1 :(得分:4)

回想一下,Delphi RTL也是由C ++ Builder使用的。当文档StrToInt接受“十进制或十六进制表示法”时,文档没有详细说明它的含义。您可以放心地期望StrToInt继续接受C风格的数字。

Val接受相同的输入,Read也是如此(因为它们最终都会调用System._ValLong)。