Einzelnen Beitrag anzeigen

DrUArn

Registriert seit: 20. Mär 2003
130 Beiträge
 
Delphi 10.3 Rio
 
#1

letzten linebreak aus tstrings (trichedit.lines) entfernen

  Alt 2. Apr 2015, 10:59
Delphi-Version: XE
Hi, comm,

ich möchte in einem Trichedit verhindern, daß am Ende eine linebreak angefügt wird (man also auf der letzten text-Zeile und nicht auf einer Zeile darunter steht).


Beispiel:
richedit.text sieht bei normalem Anhängen von 3 Zeilen mit append so aus: '1'#$D#$A'2'#$D#$A'3'#$D#$A
Der letzte Linefeed soll weg, mglst. OHNE Richedit.text neu zu setzen

Delphi-Quellcode:
procedure TextAnhaengen;
  var i:integer;
begin
  for i:=1 to 3 do richedit1.lines.append(inttostr(i)); //ergibt bei Richedit1.text : '1'#$D#$A'2'#$D#$A'3'#$D#$A
end;

procedure deletelastlinebreakMitTextNeu; //funktioniert
 var p:pchar;
begin

p:=pchar(richedit1.text);
if (p-2)^ in [#13,#10] then
    (strend(p)-2)^:=#0; //ist so was erlaubt?, geht jedenfalls, -2 entspricht entspricht -length(lines.linebreak)
RichEdit1.Text:=p

end;

procedure deletelastlinebreakOhneTextNeu;//funktioniert nicht
begin

if (pchar(richedit1.text)-2)^ in [#13,#10] then
    (strend(pchar(richedit1.text))-2)^:=#0

end;
deletelastlinebreakOhneTextNeu geht sicherlich nicht, weil text ein Konstanten-Object ist, also scheinbar so nicht verändert wird.
Genausowenig darf setlength(richedit1.text,lenght(richedit1.Text)-2) versucht werden.

Seht ihr eine Möglichkeit, richeidt1.Text zu manipulieren, ohne das wie hier RichEdit1.Text:=p; neu gesetzt werden muß?


Grüße
Uwe

Geändert von DrUArn ( 2. Apr 2015 um 11:20 Uhr)
  Mit Zitat antworten Zitat