Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Mailing lists / fpc-pascal / 2021-02

Why has the tkFloat default value changed?

6 messages · 4 people · –

Reply by email Subscribe to this list Your subscription

Read-only archive. Use j and k to move between messages.

Mattias Gaertner

Hi,

In FPC 3.2.0 the default "Default" value of a single/double property has changed from $80000000 (fpc 3.0.4) to 0.

This breaks TWriter.
The $80000000 means the property has no default value. Now FPC 3.2.0 no longer writes a property if the value is 0.0, no matter what the stored function says.

For example:
property S: Single read FSingle write FSingle stored IsSStored;

FPC 3.0.4 TWriter does write S if S=0.0 and IsSStored returns true. FPC 3.2.0 does not.

I can't find this change in
https://wiki.lazarus.freepascal.org/User_Changes_3.2.0

Mattias

Reply by email

Peter
to Mattias Gaertner
Mattias Gaertner wrote 23 lines
Hi, In FPC 3.2.0 the default "Default" value of a single/double property has changed from $80000000 (fpc 3.0.4) to 0. This breaks TWriter. The $80000000 means the property has no default value. Now FPC 3.2.0 no longer writes a property if the value is 0.0, no matter what the stored function says. For example: property S: Single read FSingle write FSingle stored IsSStored; FPC 3.0.4 TWriter does write S if S=0.0 and IsSStored returns true. FPC 3.2.0 does not. I can't find this change in https://wiki.lazarus.freepascal.org/User_Changes_3.2.0 Mattias _______________________________________________ fpc-pascal maillist - https://lists.freepascal.org/cgi-bin/mailman/listinfo/fpc-pascal

Maybe this is related to bugs 33564 & 31985 ?

Reply by email

Sven Barth
to Mattias Gaertner: In FPC 3.2.0 the default "Default" value of a single/double property has changed from…
Mattias Gaertner wrote 15 lines
Hi, In FPC 3.2.0 the default "Default" value of a single/double property has changed from $80000000 (fpc 3.0.4) to 0. This breaks TWriter. The $80000000 means the property has no default value. Now FPC 3.2.0 no longer writes a property if the value is 0.0, no matter what the stored function says. For example: property S: Single read FSingle write FSingle stored IsSStored; FPC 3.0.4 TWriter does write S if S=0.0 and IsSStored returns true. FPC 3.2.0 does not.

It was indeed the fix for Mantis #31985 (
https://bugs.freepascal.org/view.php?id=31985 ) that changed this and the behavior of the RTTI is Delphi-compatible now. If you want the default value to be $80000000 again you need to append "nodefault" to the property.

@Ondrej: you had supplied the patch back then. Would you be able to describe what exactly changed through your patch?

Regards,
Sven

Reply by email

Ondrej Pokorny
to Ondrej Pokorny
Ondrej Pokorny wrote 11 lines
On 05.03.2021 20:34, Sven Barth wrote: > Am 28.02.2021 um 23:11 schrieb Mattias Gaertner via fpc-pascal: > [...] >> I can't find this change in >> https://wiki.lazarus.freepascal.org/User_Changes_3.2.0 > > @Ondrej: you had supplied the patch back then. Would you be able to > describe what exactly changed through your patch? I added a point to https://wiki.lazarus.freepascal.org/User_Changes_3.2.0#RTTI_changes

I forgot to add a short personal rant :)

The ambiguity of the /stored/ and /(no)default/ modifiers is a huge source of confusion and errors. Such a bad design :/ (Obviously FPC is not liable for it.)

Having only the "stored" modifier would be so much simpler. (And you would be able to store all integer values in a property - currently you always have to choose one value that is not stored.)

Ondrej

Reply by email

Sven Barth
to Ondrej Pokorny: I added a point to https://wiki.lazarus.freepascal.org/User_Changes_3.2.0#RTTI_changes…

Ondrej Pokorny schrieb am Sa., 6. März 2021, 04:29:

Show quoted text 11 lines
On 05.03.2021 20:34, Sven Barth wrote: > Am 28.02.2021 um 23:11 schrieb Mattias Gaertner via fpc-pascal: > [...] >> I can't find this change in >> https://wiki.lazarus.freepascal.org/User_Changes_3.2.0 > > @Ondrej: you had supplied the patch back then. Would you be able to > describe what exactly changed through your patch? I added a point to https://wiki.lazarus.freepascal.org/User_Changes_3.2.0#RTTI_changes

Thank you! :)

Regards,
Sven

Reply by email