Delphi-PRAXiS
Seite 1 von 2  1 2      

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 initialisieren (https://www.delphipraxis.net/26724-richedit-initialisieren.html)

blue_RP 28. Jul 2004 11:20


Richedit initialisieren
 
Hallo,

ich will den Text der in ein Richedit eingetragen wird in einer TStrings-Variable speichern und später in einem anderen Richedit wieder anzeigen. Nur wenn nichts eingetragen wird, wie kann ich dann die TStrings-Variable initialisieren, damit später beim Anzeigen keine Exception wegen nil ausgelöst wird?

Danke schonmal im Voraus

René

Softchaos67 28. Jul 2004 11:44

Re: Richedit initialisieren
 
nimm einfach ein TMemo
mmo := TMemo.Create

mmo.Lines := Richedit.Lines;
oder
mmo.Text := Richedit.Text

später:
Richedit2.Text := mmo.Text

Gruss
Matthias
ps
mmo.text ist ein TStrings object. Man sollte abstrakte datentypen nicht verwenden(delphi)

mischerr 28. Jul 2004 13:24

Re: Richedit initialisieren
 
Auch hier wieder das Problem, dass so (über Richedit.Text) eine evtl. vorhandene Formatierung im Richedit verlohren geht!

Grüsse!

blue_RP 28. Jul 2004 13:34

Re: Richedit initialisieren
 
Hallo Matthias,

was muss ich denn beim Konstruktoraufruf für des TMemo als Parameter angeben, parameterlos gibts den leider nicht?

Softchaos67 28. Jul 2004 13:44

Re: Richedit initialisieren
 
Das Memo will einen owner.
Kann Self oder nil sein.
Der Owner ist für das zerstören der Instanz von TMemo zuständig.
Bei nil musst du das selbst erledigen.

Memo.destroy

Wegen des formatierten Text ist das Benutzen von TMemo vielleicht doch nicht so gut.

ok probieren wir doch mit TStrings.

Du kannst eine private Var vom Typ TStrings deklarieren.
Danach kannst du direkt Richedit.Lines zuweisen.
Kein Create verwenden.

Also
Delphi-Quellcode:
var
   str :TStrings

procedure machwas;
begin
   str := Richedit1.Lines;
end;

procedure machwasanderes;
begin
   Richedit2.Lines := str;
end
Du brauchst dann auch kein Destroy für str, da du keine Instanz erzeugt hast.
Gruss

blue_RP 28. Jul 2004 13:58

Re: Richedit initialisieren
 
Ja so hatte ich es doch schon. Das Problem ist, wenn man nichts in das erste Richedit einträgt, wird später beim Anzeigen eine Exception ausgeworfen, dass nil nicht dem AnzeigeRichedit zugewiesen werden kann. Man müsste es irgendwie initialisieren.

Softchaos67 28. Jul 2004 14:05

Re: Richedit initialisieren
 
Du musst die Zuweisung auf jeden Fall machen

str := RichEdit1.Lines

die TStrings variable ist in diesem Falle nur ein pointer.
die Zuweisung funktioniert auch dann, wenn das Richedit leer ist.
Der Zeiger str zeigt dann auf einen gültigen Speicherbereich, ist also nicht mehr nil.
Mache diese erste Zuweisung z.B. im Form.Create,
ansonsten erkläre etwas genauer worums dir geht
Gruss
Matthias

Luckie 28. Jul 2004 14:08

Re: Richedit initialisieren
 
Also mal ehr lich. Was soll bitte der Quatsch mit dem Memo? Wenn ich eine Stringlist berauche, aber nichts anzuzeigen haben, dann nehme ich eine TStringList. Alles andere ist schlicht und ergreifend Ressourcenverschwendung.

Softchaos67 28. Jul 2004 14:10

Re: Richedit initialisieren
 
@Luckie
warum gleich so verstimmt???
wollte nur helfen...aber wenn dus besser kannst...
im übrigen habe ich diese Idee wieder verworfen.
Mit TStrings gehts, mit TStringList auch, braucht man aber ev,. nicht

Luckie 28. Jul 2004 14:19

Re: Richedit initialisieren
 
Sorry, wenn es etwas verstimmt klang. Aber so was amcht man einfach nicht. ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 Uhr.
Seite 1 von 2  1 2      

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