Einzelnen Beitrag anzeigen

alzaimar
(Moderator)

Registriert seit: 6. Mai 2005
Ort: Berlin
4.956 Beiträge
 
Delphi 2007 Enterprise
 
#4

Re: String zerlegen ab einer bestimten länge aber auf...

  Alt 19. Mär 2008, 14:47
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:
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;
Ungetestet, aber so könnte es klappen;
"Wenn ist das Nunstruck git und Slotermeyer? Ja! Beiherhund das Oder die Flipperwaldt gersput!"
(Monty Python "Joke Warefare")
  Mit Zitat antworten Zitat