[fpc-pascal] function String Replication

Peter J. Haas fpc.ml at pjh2.de
Sun Mar 20 18:27:59 CET 2005

Hi Sergio,

on 2005-03-04T22:21:15+01:00 you wrote:

> I am looking for the name of the native fpc function for:

DupeString, unit StrUtils.

Take a look in the Run-Time library reference guide:
http://www.freepascal.org/docs.html (Standard units reference manual).

> function ReplicateStr(s:string;x:Integer): String;
> var
>   i:Integer;
> Begin

Here you should init the result. Certainly FPC do this, if you have
enabled huge strings {$H+}, but in other cases your code can failed.

    Result := '';
>   For i:=0 to x-1 do
>     Result += s;
> end;

If you have enabled huge strings {$H+} you should modify the source to
increase the performance:

function ReplicateStr(s: String; x: Integer): String;
  Len, i, DstIdx, SrcIdx: Integer;
  if x < 0 then
    x := 0;
  Len := Length(s);
  SetLength(Result, Len * x);
  DstIdx := 0;
  for i := 1 to x do begin
    for SrcIdx := 1 to Len do
      Result[DstIdx + SrcIdx] := s[SrcIdx];
    Inc(DstIdx. Len);

wkr Peter.

More information about the fpc-pascal mailing list