1234567891011121314151617181920212223242526272829303132333435363738 |
- if Width <= 0 then
- exit;
- NegSign := Val < 0;
- Val := Abs(Val);
- // we'll have to store characters backwards first
- I := 0;
- repeat
- Temp[I] := Chr((Val mod 10) + Ord('0'));
- Val := Val div 10;
- Inc(I);
- until (Val = 0) or (I = Width);
- // add spaces
- J := Width - I;
- FillChar(Dst^, J, PadChar);
- // add sign
- if NegSign then
- begin
- if PadChar = '0' then
- begin
- Dst[0] := '-';
- end else begin
- if J = 0 then
- begin
- // need one character for sign, shorten
- Inc(J);
- Dec(I);
- end;
- Dst[J - 1] := '-';
- end;
- end;
- // copy value, stored backwards
- repeat
- Dec(I);
- Dst[J] := Temp[I];
- Inc(J);
- until I = 0;
- // done!
|