diff w C:\TEMP\JvAppStorage.pas C:\Sandbox\P4D\PythonForDelphi\PythonIDE\JvAppStorage.pas
669a670
>     FStoreDefaultValues : Boolean;
681a683
>     procedure SetStoreDefaultValues(const Value: Boolean);
702a705,706
>     property StoreDefaultValues : Boolean read FStoreDefaultValues
>       write SetStoreDefaultValues default False;
716a721
>     property StoreDefaultValues;
1128a1134,1139
> procedure TJvCustomAppStorageOptions.SetStoreDefaultValues(
>   const Value: Boolean);
> begin
>   FStoreDefaultValues := Value;
> end;
> 
2461a2473,2507
> 
>   function IsDefaultOrdProp(PropInfo: PPropInfo): Boolean;
>   var
>     Value: Longint;
>     Default: LongInt;
>   begin
>     Value := GetOrdProp(PersObj, PropInfo);
>     Default := PPropInfo(PropInfo)^.Default;
>     Result :=  (Default <> LongInt($80000000)) and (Value = Default);
>   end;
> 
>   function IsDefaultStrProp(PropInfo: PPropInfo): Boolean;
>   var
>     Value: WideString;
>   begin
>     Value := GetWideStrProp(PersObj, PropInfo);
>     Result := Value = '';
>   end;
> 
>   function IsDefaultInt64Prop(PropInfo: PPropInfo): Boolean;
>   var
>     Value: Int64;
>   begin
>     Value := GetInt64Prop(PersObj, PropInfo);
>     Result := Value = 0;
>   end;
> 
>   function IsDefaultFloatProp(PropInfo: PPropInfo): Boolean;
>   var
>     Value: Extended;
>   begin
>     Value := GetFloatProp(PersObj, PropInfo);
>     Result := Value = 0;
>   end;
> 
2468a2515,2522
> 
>   P := GetPropInfo(PersObj, PropName, tkAny);
> 
>   // Do not store read-only or write-only properties or properties that for which
>   // IsStoredProp returns false (as VCL does)
>   if (P^.GetProc = nil) or (P^.SetProc = nil) or not IsStoredProp(PersObj, P) then
>     Exit;
> 
2470a2525,2526
>       begin
>         if StorageOptions.StoreDefaultValues or not IsDefaultStrProp(P) then
2471a2528
>       end;
2473a2531,2532
>         if StorageOptions.StoreDefaultValues or not IsDefaultOrdProp(P) then
>         begin
2475c2534,2535
<         WriteEnumeration(Path, GetPropInfo(PersObj, PropName).PropType{$IFNDEF CLR}^{$ENDIF}, TmpValue);
---
>           WriteEnumeration(Path, P.PropType{$IFNDEF CLR}^{$ENDIF}, TmpValue);
>         end;
2478a2539,2540
>         if StorageOptions.StoreDefaultValues or not IsDefaultOrdProp(P) then
>         begin
2480c2542,2543
<         WriteSet(Path, GetPropInfo(PersObj, PropName).PropType{$IFNDEF CLR}^{$ENDIF}, TmpValue);
---
>           WriteSet(Path, P.PropType{$IFNDEF CLR}^{$ENDIF}, TmpValue);
>         end;
2483a2547,2548
>         if StorageOptions.StoreDefaultValues or not IsDefaultOrdProp(P) then
>         begin
2487c2552
<           WriteEnumeration(Path, GetPropInfo(PersObj, PropName).PropType{$IFNDEF CLR}^{$ENDIF}, TmpValue);
---
>             WriteEnumeration(Path, P.PropType{$IFNDEF CLR}^{$ENDIF}, TmpValue);
2491a2557
>       end;
2492a2559,2560
>       begin
>         if StorageOptions.StoreDefaultValues or not IsDefaultInt64Prop(P) then
2493a2562
>       end;
2496c2565,2566
<         P := GetPropInfo(PersObj, PropName, tkAny);
---
>         if StorageOptions.StoreDefaultValues or not IsDefaultFloatProp(P) then
>         begin
2500a2571
>         end;
