AGB  ·  Datenschutz  ·  Impressum  







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

Vererbung - Abspeichen in Streams

Ein Thema von benwen · begonnen am 11. Sep 2006 · letzter Beitrag vom 11. Sep 2006
 
benwen

Registriert seit: 11. Sep 2006
17 Beiträge
 
Delphi 7 Enterprise
 
#1

Vererbung - Abspeichen in Streams

  Alt 11. Sep 2006, 10:44
Hallo alle zusammen!

Ersteinmal ein großes Lob an dieses Forum und allen, die mir mit ihren Beiträgen schon viel weitergeholfen haben!

Nun zu meiner aktuellen Frage.
Ich habe eine Klassenstruktur definiert, welche der folgenden prinzipiell ähnelt:
Delphi-Quellcode:
Type
  TElement = class
    show: boolean;
    (...)
  end;
  
  TExElement1 = class(TEElement)
    elemID: integer;
    (...)
  end;
  
  TExElement2 = class(TEElement)
    pos: real;
    (...)
  end;

  (...)

  TMyList = class(TList)

  TExElement1List = class(TMyList)
    function GetExElement1(index: integer): TExElement1;
  public
    procedure SaveToStream(Stream: TStream);
    procedure LoadFromStream(Stream: TStream);
    property Items[index: integer]: TExElement1 Read GetExElement1
  end;
  
  TExElement2List = class(TMyList)
  (...) //das gleiche nochmal

implementation
  
  procedure TExElementList.SaveToStream(Stream: TStream);
  var
     NewExElement1: TExElement1;
     i,Len: integer;
  begin
    NewExElement1 := TExElement1.Create;
    Len := Count
    Stream.Write(Len, SizeOf(Len));
    for I := 0 to Count - 1 do
    begin
      NewExElement1 := Items[i];
      with NewExElement1 do
      begin
        Stream.Write(show, sizeof(show));
        Stream.Write(elemID, sizeof(elemID));
        (...)
      end;
    end;
  end;

  procedure TExElementList.LoadFromStream(Stream: TStream);
  var
     NewExElement1: TExElement1;
     i,Len: integer;
  begin
    Stream.Read(Len, SizeOf(Len));
    for I := 0 to Len - 1 do
    begin
      NewExElement1 := TExElement1.Create;
      with NewExElement1 do
      begin
        Stream.Read(show, sizeof(show));
        Stream.Read(elemID, sizeof(elemID));
      end;
    end;
  end;

  function TElement1List.GetExElement1(index: integer): TExElement1;
  begin
    Result := TExElement1(TMyList(self).Items[index]);
  end;

  //und fast genau das gleiche nochmal mit ExElement2...Exelement3 usw.
Wie ihr seht wird das ganze ziemlich umständlich, obwohl alle ExElemente ein paar gleiche Eigenschaften/Variablen haben durch die Vererbung. Jetzt würde ich das ganze gerne etwas rationalisieren.
1. die Methoden der TExElementLists sollten in TMyList allgemein definiert und mittels Vererbung weitergegeben werden (z.B. durch Übermittlung der jeweiligen Klasse (bsp. TExElement1, ...)
2. die Klasse TElement sollte auch schon die Grundeigenschaften in Streams speichern und aus Streams laden können, sodass in den TExElementLists nur noch die zusätzlichen Eigenschaften behandelt werden müssen.

Ist jetzt halbwegs rübergekommen, was ich möchte?
Falls ja, wär es sehr hilfreich wenn mir hier jemand auf die Sprünge hilft. DANKE schomal!

Gruß benwen
  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 11:34 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 by Thomas Breitkreuz