我在一个单独的单元中有一些常量,如果type为ShortInt(<128),我不能对这些常量执行.ToString.
示例:创建单位并添加:
const abc = 127;
Run Code Online (Sandbox Code Playgroud)
创建一个TForm并在FormShow中执行:
Edit1.Text := abc.tostring;
Run Code Online (Sandbox Code Playgroud)
你知道为什么它不起作用吗? 输入所需的记录,对象或类.
如果常量在同一个单元中,它可以工作.
我可以用下面的最小示例来重现这一点
程序1.dpr
program Project1;
{$APPTYPE CONSOLE}
uses
System.SysUtils,
Unit1 in 'Unit1.pas';
begin
Writeln(abc.ToString);
end.
Run Code Online (Sandbox Code Playgroud)
Unit1.pas
unit Unit1;
interface
const
abc = 127;
implementation
end.
Run Code Online (Sandbox Code Playgroud)
这是一个明显的编译器错误。您可以使用不优雅的类型提示来解决该问题,如下所示:
const
abc = Shortint(127);
Run Code Online (Sandbox Code Playgroud)
这对我来说表明,当没有类型提示时,编译器127会将Shortint. 但我不太确定是什么,因为我看不到编译器的内部。
请向 Embarcadero 提交错误报告。