![]() |
String zerlegen ab einer bestimten länge aber auf...
Moin Moin,
Ich habe einen String, der ab einer bestimmten Länge 90 Zeichen einen Zeilenumbruch erleiden soll aber dabei soll auf Wörter geachtet werden - das heisst nicht einfach das wort teilen sondern dann je nach dem hinter oder vor dem Wort den Zeilenumbruch. Nun da steh ich nun und habe kein Plan.... Gefunden habe ich auch nicht wirklich etwas... oder ich suchte nach den falschen Wörtern.... Hat jemand eine idee für mich? Klar ich denke mittels POS/PosEX.... aber hmmmm |
Re: String zerlegen ab einer bestimten länge aber auf...
Grundgedanke:
Du musst mit Pos() nach Leerezeichen im String suchen, wenn das dann eine Zahl >= 90 zurückgibt musst du den Zeilenumbruch einfügen. Bedenke aber dass Pos() immer nur den ersten Substring zurückgibt. Wie das mit PosEx aussieht weiß ich net... |
Re: String zerlegen ab einer bestimten länge aber auf...
Hmmm werde wohl mir mal weiter drüber gedanken machen müssen
|
Re: String zerlegen ab einer bestimten länge aber auf...
Eigentlich nicht schwer:
Das erste Zeichen in der Zeile ist im String an Position X. Setze X1 := X + 90. Dann gehe so lange von X1 aus gesehen rückwärts, bist du im String ein Leerzeichen gefunden hast (oder bei X angelangt bist, dann hast Du ein verdammt langes Wort auf der Zeile). Sei X1 nun die Position des Leerzeichens. Nun brichst Du die Zeile an Position X1+1 (das Leerzeichen bleibt noch auf der Zeile) und setzt anschließend X = X1+1. Dann kannst Du weiter machen.
Delphi-Quellcode:
Ungetestet, aber so könnte es klappen;
Procedure BreakLongString (Const aString : String; aStringList : TStringList; aMaxLength : Integer);
Var X,X1, XEnd : Integer; Begin X := 1; XEnd := Length (aString); While X < XEnd Do Begin X1 := Min (Xend, X+90); If X1<XEnd Then Begin While (X1>X) And (aString[X1]<>' ') Do Dec (X1); If X1 = X Then X1 := X + 90; End; aStringList.Add(Copy (aString,X,X1-X+1)); X := X1+1; End End; |
Re: String zerlegen ab einer bestimten länge aber auf...
Hi,
auch D5 kennt die Funktion WrapText() - in der Unit SysUtils. Freundliche Grüße |
Re: String zerlegen ab einer bestimten länge aber auf...
Danke @marabu .... so leicht und doch so fern! :-)
DANKE! |
Re: String zerlegen ab einer bestimten länge aber auf...
Kommando zurück!
Ich lade Texte aus dem Internet. Da scheint es Probleme mit der WrapText() Funktion zu geben. Es gibt texte die werden zerlegt - und dann gibt es Texte wo WrapText nicht greift - passiert nichts! Die Texte sind aber augenscheinlich normal! Jemand eine Idee? |
Re: String zerlegen ab einer bestimten länge aber auf...
Hallo,
dann häng doch einfach mal so einen Text hier an. So aufs Blaue #13#10 Umbruch unter Windows #10 Umbruch Unix (oder war es #13 ?). Heiko |
Re: String zerlegen ab einer bestimten länge aber auf...
Zitat:
Würde ich gerne aber es handelt sich um PrivateNachrichten als keine öffentliche Texte... Ausserdem denke ich das dadurch sicher das was daran schuld ist verloren geht! Sehe ein das ich dadurch nicht gerade hilfreich bin! mach es so
Delphi-Quellcode:
S := WrapText(OLD_MESSAGE, #13#10 + '> ', ['.', ' ', #9, '-'], 50);
|
Re: String zerlegen ab einer bestimten länge aber auf...
ok hier der Text scheint erstmal nur dieser zu sein:
Zitat:
Also ich habe ihn von der Webseite so kopiert und in das RichEdit eingefügt und dann die WrapText laufen lassen und nichts passierte! - nehme ich andere geht es |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:00 Uhr. |
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-2025 by Thomas Breitkreuz