我在一个单独的单元中有一些常量,如果type为ShortInt(< 128),我就不能对这些常量执行.ToString。
示例: 创建单位并添加:
const abc = 127;
创建一个TForm并在FormShow中执行:
Edit1.Text := abc.tostring;
你知道为什么它没有用吗? 输入所需的记录,对象或类 ..
如果常数在同一个单元中,则有效。
答案 0 :(得分:4)
我可以使用以下最小例子重现这个
<强> Program1.dpr 强>
program Project1;
{$APPTYPE CONSOLE}
uses
System.SysUtils,
Unit1 in 'Unit1.pas';
begin
Writeln(abc.ToString);
end.
<强> Unit1.pas 强>
unit Unit1;
interface
const
abc = 127;
implementation
end.
这是一个明确的编译器错误。你可以用这样一个不优雅的类型提示来解决这个问题:
const
abc = Shortint(127);
这告诉我,当没有类型提示时,编译器会将127
看作Shortint
以外的其他内容。我不太确定是什么,因为我无法在编译器中看到。
请向Embarcadero提交错误报告。