使用const的Delphi ShortInt帮助器ToString

6 delphi const helper

我在一个单独的单元中有一些常量,如果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)

你知道为什么它不起作用吗? 输入所需的记录,对象或类.

如果常量在同一个单元中,它可以工作.

Dav*_*nan 4

我可以用下面的最小示例来重现这一点

程序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 提交错误报告。