Hallo Sebastian,
mit dem single quote bist du das Opfer einer Schlamperei der
VCL Macher geworden. Die Jungs haben eine Sonderbehandlung der beiden
ASCII QuoteChars in der Funktion fest verdrahtet. Sorry, aber das wusste ich auch nicht.
Ich greife mal den Ansatz von alzaimar auf und lege eine Funktion WrapText() mit kompatibler Signatur vor:
Delphi-Quellcode:
function WrapText(
const Line, BreakStr:
string;
const BreakChars: TSysCharSet;
MaxCol: Integer):
string;
var
s: TStrings;
iFirst, iLast: Integer;
begin
s := TStringList.Create;
try
iFirst := 1;
while iFirst < Length(Line)
do
begin
iLast := Min(Pred(iFirst + MaxCol), Length(Line));
while (iLast > iFirst)
and (iLast < Length(Line))
and not (Line[iLast]
in BreakChars)
do
Dec(iLast);
s.Add(BreakStr + Copy(Line, iFirst, Succ(iLast - iFirst)));
iFirst := Succ(iLast);
end;
Result := s.Text;
finally
s.Free;
end;
end;
Wenn ich deinen Beispieltext in ein Memo lade, dann erhalte ich ein akzeptables Ergebnis so:
Delphi-Quellcode:
procedure TDemoForm.ButtonClick(Sender: TObject);
var
s: TStrings;
i: Integer;
begin
s := TStringList.Create;
with Memo do
begin
for i := 0 to Pred(Lines.Count) do
s.Text := s.Text + WrapText(Trim(Lines[i]), '> ', [' ', #9], 50);
Lines.Text := s.Text;
end;
s.Free;
end;
Freundliche Grüße