我偶然注意到以下代码
var
I: Integer;
begin
I:= StrToInt('0xAA');
ShowMessage(IntToStr(I)); // shows 170 = $AA
end;
在Delphi 2009中没问题.BTW该功能帮助我从C头文件中提取十六进制常量。
我想知道使用该功能是否可以,或者该功能即将在未来版本中“修复”?
答案 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
)。