Ein Objekt sollte möglichst immer auf der Ebene freigegeben werden, auf der es auch erzeugt wurde.
Deshalb halte ich das Erzeugen einer TStringList als Rückgabewert hier nicht für sinnvoll.
Man kann den Zähler auch gegen Null zählen lassen und spart so eine Variable.
Delphi-Quellcode:
function SplitText(AText:
string):
string;
const
CRLF = #13#10;
var
C: Char;
Counter: Integer;
begin
Result := '
';
Counter := 2;
for C
in AText
do
begin
Result := Result + C;
if CharInSet(C, ['
!', '
.', '
?'])
then
Dec(Counter);
if Counter = 0
then
begin
Result := Result + CRLF;
Counter := 3;
end;
end;
end;