himitsu schlägt folgende Optimierung vor:
Delphi-Quellcode:
function StrArrayConcat(const a : array of string):string;
var
i, j, k : Integer;
begin
j := 0;
for i := Low(a) to High(a) do
Inc(j, Length(a[i]));
SetLength(Result, j);
j := 0;
for i := Low(a) to High(a) do
if a[i] <> '' then
begin
k := Length(a[i]);
MoveMemory(PChar(Pointer(Result)) + j, Pointer(a[i]), k);
Inc(j, k);
end;
end;
Sein Kommentar:
Zitat von
himitsu:
var s: string; entfernt ... unnötige bearbeiung des Referenzzählers
UniqueString entfernt (kein PChar(s), s[x]+Varparameter oder @s[x])
und ein [i]Length(a) entfernt