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 Delphi.

Marc



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.
--
_______________________________________________
lazarus mailing list
lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus

Reply via email to