Einzelnen Beitrag anzeigen

Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#1

Re: TCollection und TCollectionItem

  Alt 5. Jun 2004, 12:14
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
Angehängte Dateien
Dateityp: zip collection_633.zip (401,4 KB, 487x aufgerufen)
I come from outer space to save the human race
  Mit Zitat antworten Zitat