[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]