Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi RichEdit und Speichern der Texte in TList (https://www.delphipraxis.net/146537-richedit-und-speichern-der-texte-tlist.html)

runningsoft 21. Jan 2010 23:59


RichEdit und Speichern der Texte in TList
 
Hallo,

für einen Formulareditor speichere ich mehrere mit einem RichEdit erzeugte Texte in einer TList, die folgenden Record aufnimmt:

Delphi-Quellcode:
type
  TTextBauStein = record
    ID : integer;
    Item : TStrings;
   end;
Mit dieser Prozedur speichere ich die Daten in der TLIst:

Delphi-Quellcode:
procedure TForm11.ToolButton2Click(Sender: TObject);
type PMyList = ^TTextBaustein;
var Baustein : PMyList;
begin
New(Baustein);
BauStein^.ID := TextBausteinListe.Count + 1;
BauStein^.Item := RichEdit1.Lines;
TextBausteinListe.Add(Baustein);
end;
Mit dieser Prozedur rufe ich das erste Element der Liste auf und lasse mir zur Kontrolle den Text anzeigen. Das Phänomen ist nun, dass mir immer exakt der Text in der Kontrollanzeige angezeigt wird, der im RichEdit zu sehen ist und nicht etwa der ehemals gespeicherte Text. Es steht also in meinem Baustein^.Item immer genau das drin, was auch im RichEdit steht.

Delphi-Quellcode:
//Aufrufen des ersten Elementes aus TLIst
procedure TForm11.ToolButton3Click(Sender: TObject);
type PMyList = ^TTextBaustein;
var Baustein : PMyList;
    I : integer;
    GespText : string;
begin
BauStein := TextBausteinListe.Items[0];
GespText := '';
//Anzeige des im Record enthaltenen Textes
for I := 0 to BauStein^.fText.Count - 1 do
   begin
   GespText := GespText + (Baustein^.fText[I]) + #10#13;
   end;
showmessage(GespText);
end;
Weiß jemand Rat, wo der Fehler liegt oder wie ich besser den formatierten Text aus dem RichEdit in einer typisierten Datei ablegen kann?

Danke

Steffen

Tom 22. Jan 2010 05:11

Re: RichEdit und Speichern der Texte in TList
 
Zitat:

Zitat von runningsoft
Delphi-Quellcode:
BauStein^.Item := RichEdit1.Lines;
Das Phänomen ist nun, dass mir immer exakt der Text in der Kontrollanzeige angezeigt wird, der im RichEdit zu sehen ist und nicht etwa der ehemals gespeicherte Text. ...

Steht doch da: Baustein.Item = RichEdit.Lines. Du weißt BauStein^.Item (das ist ein Zeiger auf TStrings) RichEdit1.Lines zu (auch ein Zeiger auf TStrings. In Wahrheit möchtest Du aber den Inhalt vom RichEdit kopieren!

Also in etwa so:

Delphi-Quellcode:
Stream : TMemoryStream;
Lines : TStringList; // Zum externen Speichern des Textes

// Text in Richedit einsetzen

Lines.SaveToStream( Stream);
Stream.Position := 0;
RichEd.Lines.LoadFromStream(Stream);


// Text aus Richedit auslesen

RichEd.Lines.SaveToStream( Stream );
Stream.Position := 0;
Lines.LoadFromStream( Stream );
Damit wird auch die Formatierung des RichEdit mit gespeichert!

Tipp am Rande: Ändere Dein Record BauStein in eine eigene Klasse.

Tom 22. Jan 2010 05:17

Re: RichEdit und Speichern der Texte in TList
 
Noch ein Tipp:
Zitat:

Zitat von runningsoft
Delphi-Quellcode:
    GespText : string;
...
GespText := '';
for I := 0 to BauStein^.fText.Count - 1 do
   begin
   GespText := GespText + (Baustein^.fText[I]) + #10#13;
   end;
showmessage(GespText);

Macht das gleiche:

Delphi-Quellcode:
showmessage(BauStein^.fText.Text);


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz