Liebe Codelib-Manager,
es ist fertig.
Die
unit dpCollection.pas enthält die Klassen TJsCollection und TmxJsCollection
Mit diesen Klassen in der Kombination mit Nachfahren von TCollectionItem
lassen sich n-dimsionale "Array's" aufbauen. Je ein TCollectionItem Nachfahre bildet ein Element. Die
Werte die in dem "Array" gespeichert werden sind dann die published properties der TCollectionItem Nachfahren.
Bislang ist das noch nichts besonderes. Aber die Daten lassen mit einem einfachen "SaveToStream" speichern
und mit einem "LoadFromStream" wieder laden. D.h. ein "Arrayelement" kann ein TBitmap, eine TJsCollection (für die
nächste Dimension), Integers, Strings oder TStrings enthalten. Solange die Dinger als published properties
deklariert sind, werden sie automatisch gespeichert. Die beiden TCollection Nachfahren machen sich hier das
Delphi-Streamingsystem zu nutze. Das ist das gleiche Teil das dafür sorgt, dass die Eigenschaften, die über den
Objektinspektor eingestellt werden in der
dfm-Datei landen.
TJsCollection implementiert die gundlegenden Methoden wie:
- LoadFromStream
- LoadFromFile
- SaveToStream
- SaveToFile
TJsCollection speichert immer im Binärformat
TmxJsCollection führt die Property Binary ein.
Wenn Binary auf False gesetzt wird, werden die Daten im Textformat gespeichert.
Dei Datei hat den Aufbau einer
dfm-Datei (im Textformat).
Das Beispielprogramm (siehe TestApp.jpg oder TestApp.ppt) baut ein 2 dimensionales
Array (siehe CollectionItems.gif oder CollectionItems.ppt) auf.
Die Dateien befinden sich alle in der zip-Datei.
Unterschied zwischen D5 und D7
Wenn ein TCollectionItem eine TJsCollection oder TmxJsCollection property
hat (In diesen Beispiel wäre das die TD7CollectionItem Property Numbers in
der
unit collectionitems_impl), so werden deren published properties nicht
von D5 gestreamt.
Es können die Dateien aber von den Versionen (D5/D7) gelesen werden.
Gruß
Maximov und Jens