Binäre Dateien
TKontakte.SaveToBinaryTag
Im vorherigen Abschnitt haben wir die Methode SaveToBinaryTag aufgerufen.
FKontakte.SaveToBinaryTag(SreamData.AddTag('Kontakte'));
Diese Methode wollen wir jetzt implementieren.
Dazu erweitern wir die Deklaration der Klasse TKontakte um die Methode SaveToBinaryTag
TKontakte = class(TObjectList) private function GetItems(Idx: integer): TKontakt; public function NewKontakt: TKontakt; procedure SaveToBinaryTag(Tag: TRakBinaryTag); property Items[Idx: integer]: TKontakt read GetItems; default; end;
und implementieren diese.
procedure TKontakte.SaveToBinaryTag(Tag: TRakBinaryTag); var I: integer; begin for I := 0 to Count - 1 do Items[I].SaveToBinaryTag(Tag.AddTag('Kontakt')); end;
Die Methode macht nicht viel.
Für jeden Kontakt, wird ein Unterknoten erzeugt.
Items[I].SaveToBinaryTag(Tag.AddTag('Kontakt'));
Jeder dieser Unterknoten bekommt den Namen Kontakt. Die Namen von Unterknoten müssen nicht eindeutig sein. Erst durch seine Position wird ein Unterknoten eindeutig. Es ist also sichergestellt, dass nach dem Laden aus einer Datei alle Unterknoten in der gleichen Reihenfolge vorliegen, wie vor dem Speichern.
Jeder Kontakt muss seine Daten selbst in den neuen Knoten ablegen. Dazu wird dessen Methode SaveToBinaryTag aufgerufen. Diese wird im nächsten Abschnitt implementiert.