[Back to STRINGS SWAG index] [Back to Main SWAG index] [Original]

    Function Spaces(NumSpaces : Byte) : String;

    Var
      s : String;

    begin
      s[0] := Chr(Numspaces);
      If NumSpaces = 0 Then
        Exit;
      FillChar(s[1], NumSpaces, ' ');
      Spaces := s;
    end;

    {
    This still too slow For my taste, though...  there's a superfluous String
    copy and it still needs 512 Bytes of stack space.
    }

    Function Spaces(NumSpaces : Byte) : String; Assembler;

    Asm
      LES    DI, @Result
      CLD
      MOV    AL, NumSpaces
      xor    AH, AH
      STOSB
      XCHG   AX, CX
      JCXZ   @Exit
      MOV    AL, ' '
      SHR    CX, 1
      JNC    @Even
      STOSB
    @Even:  REP    STOSW
    @Exit:
    end;  { Spaces }

[Back to STRINGS SWAG index] [Back to Main SWAG index] [Original]