2017-01-31 34 views
6

Mam kilka stałych w oddzielnej jednostce, nie mogę zrobić .ToString na tych stałych, jeśli typ jest ShortInt (< 128).Delphi ShortInt helper ToString with const

Przykład: Tworzenie jednostki i dodać:

const abc = 127; 

Tworzenie TForm aw FormShow zrobić:

Edit1.Text := abc.tostring; 

Czy wiesz, dlaczego to nie działa? typ rekordu, obiektu lub klasy wymagane ..

To działa, jeśli jest stała w tej samej jednostce ..

+0

Co ze starym dobrym inttoStr()? –

+0

Czy jednostka, w której jest zadeklarowane słowo "abc", znajduje się w klauzuli uses formularza? –

+0

IntToStr działa perfekcyjnie, tak, że jednostka z const jest zawarta w zastosowaniach mojego formularza. –

Odpowiedz

4

mogę odtworzyć ten z następującym minimalnym przykład

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. 

To jest wyraźny błąd kompilatora. Można obejść problem z nieeleganckie typu podpowiedź jak to:

const 
    abc = Shortint(127); 

Sugeruje mi się, że gdy nie ma wpisać wskazówkę, kompilator widzi 127 jako coś innego niż Shortint. Nie jestem do końca pewien co, ponieważ nie widzę wewnątrz kompilatora.

Proszę przesłać raport o błędzie do Embarcadero.

+0

Dziękuję, zrobię to, RSP-16798 w jakości Embarcadero. –

+0

Proszę użyć [MCVE] z mojej odpowiedzi, ponieważ ułatwi to Embarcadero zrozumienie problemu. Warto też odnieść się do tego pytania w swoim raporcie o błędzie. –