Der Datentyp hat doch keinerlei Einfluss darauf, ob das Property gespeichert wird oder nicht. Wenn da "stored False" ist, darf überhaupt nichts gespeichert werden. Im
DFM darf das Property dann überhaupt nicht vorhanden sein. Das ist die Funktion dieser Direktive. Auch der Defaultwert hat damit überhaupt nichts zu tun. Dafür gibt es "default X" und das entsprechende Zuweisen an das Feld im Create.
OP, ich sehe da nichts Falsches. Dass ein Property Integer 0 oder ein leerer String nicht gespechert wird, ist absolut richtig. Das sind ja die Anfangswerte auf die du deine Felder im Create initialisierst oder machst du das nicht? Dann ist der Fehler bei dir. Du solltest alle Felder in Create initialisieren.
EDIT:
Eventuell habe ich diene Frage falsch verstanden. Setzt du den einen default Wert beim Property? Also so...
Delphi-Quellcode:
property Abc: Integer read FAbc write FAbc default 5 stored IsStored;
TMyOvjet.Create...
begin
FAbc = 5;
inherited;
end;
In diesem Fall dürfte das Property nur dann nicht gepseichert werden, wenn es den Wert 5 hat oder IsStored False liefert. Verstehe cih das nun richtig, dass das Property auch nicht gespeichert wird, wenn es den Wert 0 hat. Das wäre dann in der Tat ein Bug, insofern dein Property so definiert ist wie oben in meinem Beispiel.