Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#4

Re: TList in Datei schreiben/lesen

  Alt 23. Jan 2010, 03:17
Ich denke, es ist ganz offensichtlich, dass der Record TTextBaustein einige Methoden braucht und deshalb in eine Klasse umgewandelt werden sollte.
Es bei einem Record zu belassen wäre unprofesionell.
Delphi-Quellcode:
type
  TTextBauStein = class(TPersistent)
  public
    ID : integer; // ID des Textbausteins
    fText : TStringList; // Text aus RichEdit
    construtor Create;
    destructor Destroy;override;

    procedure LoadFromStream(stream:TStream);
    procedure SaveToStream(stream:TStream);
  end;
Durch den Konstruktor und Destruktor übernimmt die Klasse die Verwantwortung ("Ownership") über die Stringliste.
Dies vereinfacht die Arbeit mit TTextBaustein.
Statt in TList werden die TTextBaustein-Objekte in einer TObjectList gehalten.

Die Daten werden mit der Technik gespeichert, die Astat im vorherigen Beitrag beschrieben hat:
Delphi-Quellcode:
procedure TTextBauStein.SaveToStream(stream:TStream);
var
  s : string;
  len : integer;
begin
  Assert(Assigned(stream));
  stream.WriteBuffer(ID, sizeof(ID));
  s := fText.Text;
  len := Length(s);
  //-- Länge in Stream speichern
  stream.WriteBuffer(len, sizeof(len));
  //-- TStringList Daten speichern
  stream.WriteBuffer(s[1], len);
end;
Man sieht sehr schön, wie die Anwendung von Objektorientierung den Sourcecode vereinfacht.
fork me on Github
  Mit Zitat antworten Zitat