Переглянути джерело

* Added Delphi-compatible overload for ToString with UpdateCapacity argument

Michaël Van Canneyt 1 рік тому
батько
коміт
bc714c0fd7
2 змінених файлів з 15 додано та 1 видалено
  1. 13 0
      rtl/objpas/sysutils/syssb.inc
  2. 2 1
      rtl/objpas/sysutils/syssbh.inc

+ 13 - 0
rtl/objpas/sysutils/syssb.inc

@@ -700,6 +700,19 @@ begin
     end;
 end;
 
+{$IFDEF UNICODERTL}
+function TGenericStringBuilder.ToString(UpdateCapacity: Boolean): RTLString;
+{$ELSE}
+function TGenericStringBuilder.ToString(UpdateCapacity: Boolean): SBString;
+{$ENDIF}
+
+begin
+  if (Length<>Capacity) and UpdateCapacity then
+    SetCapacity(Length);
+  Result:=ToString;
+end;
+
+
 procedure TGenericStringBuilder.DoReplace(Index: Integer; const Old, New: SBString);
 
 var

+ 2 - 1
rtl/objpas/sysutils/syssbh.inc

@@ -115,11 +115,12 @@
     Function Replace(const OldValue, NewValue: SBRawString; StartIndex: Integer; Count: Integer): TGenericStringBuilder;
 {$IFDEF UNICODERTL}
     Function ToString: RTLString; override;
+    function ToString(UpdateCapacity: Boolean): RTLString; overload;
 {$ELSE}    
     Function ToString: SBString; {$IFNDEF SBUNICODE} override; {$ELSE}  reintroduce; {$ENDIF}
+    function ToString(UpdateCapacity: Boolean): SBString; overload;
 {$ENDIF}
     Function ToString(aStartIndex: Integer; aLength: Integer): SBString; reintroduce;
-
     property Chars[index: Integer]: SBChar read GetC write SetC; default;
     property Length: Integer read GetLength write SetLength;
     property Capacity: Integer read GetCapacity write SetCapacity;