Wie kann ich die maximale Textlänge in einem TRichEdit erhöhen?


Wenn ich zu einem RichEdit mittels Lines.Add Zeilen hinzufüge, ist irgendwann Schluß. Hat auch die TRichEdit-Komponente (wie TMemo) eine Maximallänge?

Im Prinzip nicht. Die Längenbeschränkung bei TRichEdit ist jedenfalls jenseits normalerweise nutzbarer Grenzen. Die RichEdit-Komponente besitzt aber wie auch TMemo und TEdit die Eigenschaft MaxLength, die die maximale Textlänge begrenzt.
Per Voreinstellung hat diese immer den Wert "0". Das wird sowohl für TEdit und TMemo, als auch für TRichEdit als Maximalgröße von 32 Kilobyte interpretiert.

Nach der Erstellung kann ein RichEdit also erstmal nicht größer werden, als ein TMemo. Während bei diesem die 32kB aber bereits den höchtmöglichen Wert darstellen (zumindest bis Delphi 3), kann man der MaxLength-Eigenschaft der RichEdit-Komponente einfach einen höheren Wert zuweisen:

RichEdit1.MaxLength := 2147483647; // damit kann das Teil 2^31 Byte groß werden.

Über den maximalen Wert für MaxLength besteht bei mir allerdings Unklarheit. Maxlength ist als "integer" definiert und kann somit eben als höchsten Wert 2^31 annehmen. Mit der EM_EXLIMITTEXT-Nachricht kann man dem Ding aber Maximalgrößen zuweisen, die als "dword" definiert sind und damit als höchsten Wert 2^64 annehmen können...

Vorsicht, TRichEdits mit sehr großen Texten neigen zu schneckenhaftem Verhalten!

Delphi 1 Delphi 2 Delphi 3 Delphi 4
nicht getestet Version nicht betroffen getestet

siehe auch:

Wie ermittle ich in einem TMemo (oder TRichEdit) die Cursorposition?
Wie kann ich zu einer bestimmten Zeile eines TMemo (order TRichEdit) scrollen?
Wie fügt man an einer bestimmten Position Text in ein TMemo (order TEdit, TRichEdit) ein?
Wie kann ich den blinkenden Cursor in einem deaktivierten TMemo (oder TEdit) verstecken?


Delphi FAQ