2017-01-31 3 views
6

У меня есть некоторые константы в отдельном блоке, я не могу сделать .ToString для этих констант, если тип ShortInt (< 128).Помощник Delphi ShortInt ToString с константой

Пример: Создать блок и добавить:

const abc = 127; 

Создать TForm и FormShow сделать:

Edit1.Text := abc.tostring; 

Знаете ли вы, почему он не работает? Тип записи, объект или класс требуется ..

Это работает, если константа находится в том же блоке ..

+0

Как насчет старого старого inttoStr()? –

+0

Является ли единица, в которой объявляется 'abc', содержится в предложении uses вашей формы? –

+0

IntToStr отлично работает, да блок с константами содержится в использовании моей формы. –

ответ

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.

+0

Спасибо, я сделаю это, RSP-16798 на качество Embarcadero. –

+0

Пожалуйста, используйте [MCVE] из моего ответа, потому что это поможет Embarcadero понять проблему. Стоит также ссылаться на этот вопрос в вашем отчете об ошибке. –

Смежные вопросы