[Lazarus] Can I delete a property from a collectionitem

Marc Weustink marc at dommelstein.nl
Thu Oct 13 11:00:46 CEST 2022

On 12-10-2022 18:21, Michael Van Canneyt via lazarus wrote:
> On Wed, 12 Oct 2022, nibbikfrans via lazarus wrote:
>> Hi,
>> I have a collection stored in a file. One property of each 
>> collectionitem is a value of what seeems to be a set but is not. That 
>> property is no longer needed. Is there a way to delete that property? 
>> I suppose I can do that by creating a new collectionitem type without 
>> that property and migrate the data. But then a have a different 
>> collection which meens a have to make lots of changes.
> Yet that is the only correct way.
> If you can make a descendent, you can
> override the property and simply discard the value when it is set in the
> setter.

What you also can do is remove the property and override the 
DefineProperties method of your CollectionItem object and add a dummy 
reader for your propertyname. This way you will be able to read old data 
and in new data it won't get written.

I didn't test this on FPC, but I've done it this way several times in 


>> If deleting a property isn't possible, how can I delete the value of 
>> that property?
> In the file, in the instance of the collectionitem or where ?
>> And an extra question is: how can I test whether the property has a 
>> value or not?
>> The possible value is defined as followes:
>> TTest = (test1, test2, test3);
>> TTestValues = set ot TTest;
> The property has a set as value ?
> If the set is empty, then the property has no value ? Unless empty value 
> is also a value.
> Michael.

More information about the lazarus mailing list