[Lazarus] Tooltip shows value of some but not all const items....
Bo Berglund
bo.berglund at gmail.com
Sat Jan 2 23:29:24 CET 2021
On Sat, 2 Jan 2021 12:36:06 +0100, Sven Barth via lazarus
<lazarus at lists.lazarus-ide.org> wrote:
>Am 02.01.2021 um 12:09 schrieb Bo Berglund via lazarus:
>> Another question:
>> -----------------
>> Is there a difference between the two types of declarations?
>> I think that the # specifier of the value also declares the const as a
>> char in the first place, or not?
>
>The first is a "untyped constant". It takes its type implicitely from
>the right side and not everything can be a constant (e.g. you can't use
>records). So in your case, yet's it's a Char due to the right side being
>a character constant.
>
>The second is a so called "typed constant". They are essentially
>variables that might be readonly (they are readonly if {$J-} is set
>which is *not* the default). They were originally introduced in Turbo
>Pascal to allow for static variables inside functions (cause that is how
>they behave).
>
>The main difference is that an untyped constant can be used inside
>constant expressions (e.g. to declare a static array with certain
>bounds) while a typed constant can not. On the other hand you can take
>the address of a typed constant (as it's essentially a variable with
>readonly data) while you can't do that for untyped constants.
>
>And yes, it behaves this way in Delphi, too.
Since I see no difference in the usage of these constants typed or
not, I might as well remove the type declaration.
After all I do not want thes to change like a variable can...
The value is a char thanks to the #$ part, I guess.
Or a byte, which is really what it is used as, they are command
identifiers in a packet sent by RS232 to the equipment.
--
Bo Berglund
Developer in Sweden
More information about the lazarus
mailing list