Home » Tutorials » Datenspeicherung » Binäre Dateien

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.