Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Wie bekomme ich den Zeilenumbruch weg? (https://www.delphipraxis.net/204625-wie-bekomme-ich-den-zeilenumbruch-weg.html)

NicoleWagner 12. Jun 2020 19:02

Delphi-Version: 5

Wie bekomme ich den Zeilenumbruch weg?
 
Hier ist meine Vereinfachung eines Problems, das ich schon in vielen Varianten anging und dessen Typen ich mehrfach tauschte:

Es gibt ein Eingabefeld vom Typ TEdit.
In dieses Feld wird ein Text vor-ausgefüllt, den der Nutzer verändern kann.
OnChance dieses Edits soll der neue Text in einem Vorschaufeld ausgegeben werden.

Mein Problem: Sobald in dem Edit irgend etwas verändert wird (im Screenshot schrieb ich mal eine 5 ins Feld) hockt ein Zeilenumbruch davor.
Diesen Zeilenumbruch bekomme ich mit nichts weg! Nicht mit trim, nicht mit AnsiReplace oder anders.
Pos findet ihn nicht mal!

Bitte seht auf dem Screenshot, wie ich versuchte, jedes Stringchen zu trimmen und im Auswerten-Fenster den Wert, den das Eingabefelt von TEdit hat:
Ihr seht, vor meiner "5" ist ein Zeilenumbruch.

Idealerweise sollte der Zeilenumbruch nicht ex post entfernt werden, sondern niemals erzeugt.
Danke für alle Tips und Tricks!

NicoleWagner 12. Jun 2020 19:05

AW: Wie bekomme ich den Zeilenumbruch weg?
 
Liste der Anhänge anzeigen (Anzahl: 1)
Anhang

Delphi.Narium 12. Jun 2020 19:27

AW: Wie bekomme ich den Zeilenumbruch weg?
 
Wo kommt der
Zitat:

In dieses Feld wird ein Text vor-ausgefüllt
her? Hängt da eventuell schon ein Zeilenumbruch dran?

Wie sieht self.Label_BearbeitenNeueZeile.Text im Debugger aus?

Wenn bei der Eingabe die Zeichen an den vorhandenen Text von Edit_Bearbeiten angefügt werden, dann hilft ein Trim nicht, wenn der Zeilenumbruch vorher schon am Ende von self.Edit_Bearbeiten.Text war.

Was passiert, wenn Du mal am Anfang von Edit_BearbeitenChange ein
Delphi-Quellcode:
Edit_Bearbeiten.Text := AnsiReplaceText(Edit_Bearbeiten.Text,#13#10,'***');
machst. Wird der Text dann zu
Delphi-Quellcode:
 Floater sollte abgerechnet sein, siehe in meine Mappe***5
?

blawen 12. Jun 2020 19:29

AW: Wie bekomme ich den Zeilenumbruch weg?
 
Obsolet

NicoleWagner 13. Jun 2020 11:16

AW: Wie bekomme ich den Zeilenumbruch weg?
 
@Delphi.Narium: danke!!!
Du hast das Problem korrekt erkannt und die Lösungszeile 1:1 erwischt.

Genau das ist es: Mein String wird vom Nutzer gewählt aus einem RichEdit-Nachkommen, aus dem ich es extrahierte mit s:=__.___.text;
Und da hängt in der Tat noch ein Zeilenumbruch hinten dran, woher und wovon auch immer.

Jetzt bin ich richtig gut drauf: Denn mit diesem Hinweis löst sich noch ein völlig anderes Ausgabe-Problem, das mich nervte.

Andreas L. 13. Jun 2020 11:23

AW: Wie bekomme ich den Zeilenumbruch weg?
 
Hi Nicole,
woher der Zeilenumbruch kommt weiß ich nicht. Aber mir ist auf deinem Screenshot etwas aufgefallen. Du selektierst den Text "self.Edit_Bearbeiten.Text" und prüfst seinen Wert durch die "Auswerten/Ändern..."-Funktion. In diesem Fall zeigt der Debugger zwar den Inhalt von "self.Edit_Bearbeiten.Text" an. Aber da du das "Trim" nicht mit selektiert hast siehst du nicht wie der Wert nach dem "Trim" aussieht. Du musst also den ganzen Text "trim(self.Edit_Bearbeiten.Text)" selektieren wenn du den Wert nach dem Trim erfahren willst.

Delphi.Narium 13. Jun 2020 11:35

AW: Wie bekomme ich den Zeilenumbruch weg?
 
Das Text-Attribut aller Nachkommen von TStrings endet mit einem Zeilenumbruch. Immer, schon seit den Anfängen von Delphi.

Das muss man sich einfach merken und wenn man Text mit anderen Strings zusammenfügen will und diesen Zeilenumbruch nicht haben will, dann muss da ein Trim drum.

Delphi-Quellcode:
TLabel.Caption + TStrings.Text + TEdit.Text
enthält immer einen Zeilenumbruch vor TEdit.Text, man muss hier also
Delphi-Quellcode:
TLabel.Caption + Trim(TStrings.Text) + TEdit.Text
machen. Da das Text-Attribut von TEdit nicht von TStrings abgeleitet ist, ist hier kein Trim erforderlich, da das Text-Attribut von TEdit und seinen Nachkommen nicht mit einem Zeilenumbruch endet.

himitsu 13. Jun 2020 12:02

AW: Wie bekomme ich den Zeilenumbruch weg?
 
Bei ganz neuen TStrings gibt es nun ein neues Property, womit man den letzten Zeilenumbruch abschalten kann.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:27 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