AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TObjektList mit 2 oder mehr TObjekte

Ein Thema von alfold · begonnen am 30. Dez 2018 · letzter Beitrag vom 1. Jan 2019
 
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.029 Beiträge
 
Delphi 10.4 Sydney
 
#13

AW: TObjektList mit 2 oder mehr TObjekte

  Alt 1. Jan 2019, 13:14
Anbei nun ein Beispielcode. Gibt noch andere Ansätze, aber das Grundprinzip sollte klar werden. Mit einer generischen TObjectList<T> wäre es noch eleganter, aber die steht Dir ja bei D7 nicht zur Verfügung...

Voila...

Delphi-Quellcode:
unit TestUnit;

interface

uses Classes, SysUtils, Contnrs;


type TObjekt1 = class(TObject)
  private
    FID : Integer;
    FValue : Integer;

  public
    property ID : Integer read FID write FID;
    property Value : Integer read FValue write FValue;

    procedure SavetoStream(AStream : TStream);
    procedure LoadFromStream(AStream : TStream);

    constructor Create(AID : Integer; AValue : Integer);
end;

type TObjektListe = class(TObjectList)
  public
    procedure LoadFromStream(AStream : TStream);
    procedure SaveToStream(AStream : TStream);

end;

implementation

{ TObjekt1 }

constructor TObjekt1.Create(AID, AValue: Integer);
begin
  FID := AID;
  FValue := AValue;
end;

procedure TObjekt1.LoadFromStream(AStream: TStream);
begin
  AStream.ReadBuffer(FID, SizeOf(FID));
  AStream.ReadBuffer(FValue, SizeOf(FValue));
end;

procedure TObjekt1.SavetoStream(AStream: TStream);
begin
  AStream.WriteBuffer(FID, SizeOf(FID));
  AStream.WriteBuffer(FValue, SizeOf(FValue));
end;

{ TObjektListe }

procedure TObjektListe.LoadFromStream(AStream: TStream);
var FCount : Integer;
  i: Integer;
begin
  (* Liste löschen *)
  Clear;

  (* Anzahl der Elemente auslesen *)
  AStream.ReadBuffer(FCount, SizeOf(Fcount));

  for i := 0 to FCount-1 do begin
    Add(TObjekt1.Create(-1, -1));
    TObjekt1(Last).LoadFromStream(AStream);
  end;
end;

procedure TObjektListe.SaveToStream(AStream: TStream);
var FCount : Integer;
  i: Integer;
begin
  (* Anzahl der Elemente speichern *)
  FCount := Count;
  AStream.WriteBuffer(FCount, SizeOf(FCount));

  (* Einzelne Elemente speichern *)
  for i := 0 to FCount-1 do
    TObjekt1(Items[i]).SavetoStream(AStream);
end;

end.
Michael Kübler
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:04 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz