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;