Die ganzen Jahre predige ich, das man ständige Stringkonkatenationen vermeiden soll, und normalerweise stimmt das auch.
Aber hier nicht:
Delphi-Quellcode:
Function V1(s: TStringList): Integer;
Var
i: Integer;
x: String;
Begin
x := '';
For i := 0 To s.count - 1 Do
x := x + s[i];
Result := Length(x)
End;
Function V2(s: TStringList): Integer;
Var
l, i, j, n: Integer;
z, x: String;
Begin
n := 0;
For i := 0 To s.count - 1 Do
inc(n, Length(s[i]));
SetLength(x, n);
j := 1;
For i := 0 To s.count - 1 Do Begin
z := s[i];
l := Length(z);
Move(z[1], x[j], l);
inc(j, l);
End;
Result := Length (x);
End;
(Bitte keine Kommentare wegen der Variablennamen, ok?)
Preisfrage: Was ist schneller? V1 oder V2?
Ihr werdet's nicht glauben: Das ach so dilletantische V1.
Die Frage ist: Wieso?