Jak zapisywać obiekty dziedziczące po TPersistent w innym formacie niż to robi WriteComponent i ReadComponent ?
Jakie obiekty?
I do czego to ma służyć?
Szukam rozwiązania dla Delphi 2010
WriteComponent nie jest zły ale ma kilka wad:
- binarny format cieżko porównać róznice miedzy kolejnymi wersjami
- jak obiekt zapisany ma inna budowę to nie można wczytać do obiektu (np. nowa wersja API i zmodyfikowane niektóre pola )
WriteComponent i ReadComponent służą trochę do innych celów, a słowem klucz jest tu Component
.
OmniXML robił to poprawnie i tak jak byś chciał.
A było to ponad 10 lat temu...
A tu jest "lepszy" klon:
http://www.kluug.net/omnixml.php
A tu oryginał:
https://github.com/mremec/omnixml
Na razie eksperymentuje z
https://robstechcorner.blogspot.com/2009/10/xml-serialization-basic-usage.html
Znam to, ale to projekt który powstał w celu zabawy z nowym RTTI.
Do serializacji sensu stricte to się nie nadaje, bo zwyczajnie jest za słabe.
Zbyt proste.
Ale do prezentacji możliwości nowego RTTI wydawał się idealny :)
Nie chciał bym wymyślać koła na nowo
To najpierw opisz co chcesz osiągnąć.
Ja bardzo szeroko stosuję serializację, ale można powiedzieć że to jest zapis i odczyt sany obiektu.
Tylko tyle i aż tyle.
Jednym z najlepszych bibliotek jakie znam do Delphi jest SvSerializer:
https://bitbucket.org/soundvibe/delphi-oop/src/master/
Rzuć okiem na sekcję Persistance
.
Ma naprawdę spore możliwości i prawdopodobnie daje Ci 200% tego co potrzebujesz.
Innym rozwiązaniem jest komercyjne biblioteka OXml:
http://www.kluug.net/oxml.php
Bardzo szybka i całkiem potężna.