If you know the size of the array you can set it and the array of strings will be already there
StringList.Size := X;
And maybe is faster?
Edit: Alright, you already have the array created so, check TStringList method of concatenating maybe is fast, else we found something that may be improved.
Function TStrings.GetTextStr: string;
Var P : Pchar;
I,L,NLS : Longint;
S,NL : String;
begin
CheckSpecialChars;
// Determine needed place
Case FLBS of
tlbsLF : NL:=#10;
tlbsCRLF : NL:=#13#10;
tlbsCR : NL:=#13;
end;
L:=0;
NLS:=Length(NL);
For I:=0 to count-1 do
L:=L+Length(Strings[I])+NLS;
Setlength(Result,L);
P:=Pointer(Result);
For i:=0 To count-1 do
begin
S:=Strings[I];
L:=Length(S);
if L<>0 then
System.Move(Pointer(S)^,P^,L);
P:=P+L;
For L:=1 to NLS do
begin
P^:=NL[L];
inc(P);
end;
end;
end;