diff --git a/rtl/objpas/classes/stringl.inc b/rtl/objpas/classes/stringl.inc index 595d047eb9..2b2897f203 100644 --- a/rtl/objpas/classes/stringl.inc +++ b/rtl/objpas/classes/stringl.inc @@ -779,13 +779,16 @@ end; Procedure TStrings.AddStrings(TheStrings: TStrings; ClearFirst : Boolean); - +Var Runner : longint; begin beginupdate; try if ClearFirst then Clear; - AddStrings(TheStrings); + if Count + TheStrings.Count > Capacity then + Capacity := Count + TheStrings.Count; + For Runner:=0 to TheStrings.Count-1 do + self.AddObject (Thestrings[Runner],TheStrings.Objects[Runner]); finally EndUpdate; end; @@ -793,31 +796,28 @@ end; Procedure TStrings.AddStrings(TheStrings: TStrings); -Var Runner : longint; begin - For Runner:=0 to TheStrings.Count-1 do - self.AddObject (Thestrings[Runner],TheStrings.Objects[Runner]); + AddStrings(TheStrings, False); end; Procedure TStrings.AddStrings(const TheStrings: array of string); -Var Runner : longint; begin - if Count + High(TheStrings)+1 > Capacity then - Capacity := Count + High(TheStrings)+1; - For Runner:=Low(TheStrings) to High(TheStrings) do - self.Add(Thestrings[Runner]); + AddStrings(TheStrings, False); end; Procedure TStrings.AddStrings(const TheStrings: array of string; ClearFirst : Boolean); - +Var Runner : longint; begin beginupdate; try if ClearFirst then Clear; - AddStrings(TheStrings); + if Count + High(TheStrings)+1 > Capacity then + Capacity := Count + High(TheStrings)+1; + For Runner:=Low(TheStrings) to High(TheStrings) do + self.Add(Thestrings[Runner]); finally EndUpdate; end;