Difference between revisions of "SPACE$"

From QB64 Wiki
Jump to navigation Jump to search
imported>Clippy
imported>Clippy
m
 
(11 intermediate revisions by 3 users not shown)
Line 1: Line 1:
The '''SPACE$''' function is used to insert a specified [[INTEGER]] number of spaces into a [[STRING]] value or variable.
+
The {{KW|SPACE$}} function returns a {{KW|STRING}} consisting of a number of space characters.
  
  
 +
{{PageSyntax}}
 +
:''result$'' = '''SPACE$({{Parameter|count&}})'''
  
''Syntax:'' SPACE$(number_of_spaces%)
 
  
 +
{{Parameters}}
 +
* {{Parameter|count&}} is the number of space characters to repeat. Cannot use negative values!
  
  
* Can be used in any string value using the + concatenation operator.
+
''Usage:''
* Semicolons or + can be used in a screen [[PRINT]] or [[PRINT (file statement)]].
+
* Semicolons can be used to combine spaces with text [[STRING]] or numerical values.
* Spaces are often used to erase previous PRINTs from the screen.
+
* [[Concatenation]] using + can be used to combine [[STRING]] text values only.
 +
* Spaces are often used to erase previous text PRINTs from the screen.
 +
* The function result can also be used to [[GET]] and [[PUT]] a number of bytes as zero characters: bytes$ = SPACE$(numbytes)
 +
* Spaces can also be made using [[SPC]], [[CHR$]](32) or [[STRING$]](n%, 32).
  
  
 +
''Differences between QB64 and QB 4.5:''
 +
* '''QB64''' can use [[LONG]] values for count up to 2,147,483,647 while '''QB 4.5''' could only use [[INTEGER]] values up to 32,767.
  
  
''See also:'' [[STRING$]], [[SPC]]
+
''Example 1:'' How to space text in a [[PRINT]] statement using SPACE$ with string [[concatenation]].
 +
{{CodeStart}} '' ''
 +
{{Cl|FOR...NEXT|FOR}} count% = 0 {{Cl|FOR...NEXT|TO}} 3
 +
    {{Cl|PRINT}} "abc" + {{Cl|SPACE$}}( count% ) + "def"
 +
{{Cl|FOR...NEXT|NEXT}} count%
 +
{{CodeEnd}}
 +
{{OutputStart}}abcdef
 +
abc def
 +
abc  def
 +
abc  def
 +
{{OutputEnd}}
  
  
 +
''Example 2:'' In [[SCREEN]] 0 SPACE$ can be used to change the background color to make an American flag.
 +
{{CodeStart}}
 +
USA flag centered on screen with thin horizontal red & white stripes
 +
' blue corner field with randomly twinkling stars
 +
{{Cl|CLS}}
 +
{{Cl|LOCATE}} 25, 1
 +
{{Cl|PRINT}} "Press any key to stop twinkling";
 +
{{Cl|COLOR}} , 4
 +
z = 15
 +
{{Cl|FOR...NEXT|FOR}} x = 5 {{Cl|TO}} 19          '13 red & white stripes (x =5 to 21 for 15 stripes)
 +
    {{Cl|IF...THEN|IF}} z = 15 {{Cl|THEN}} z = 4 {{Cl|ELSE}} z = 15
 +
    {{Cl|COLOR}} , z
 +
    {{Cl|LOCATE}} x, 15
 +
    {{Cl|PRINT}} {{Cl|SPACE$}}(55)
 +
{{Cl|NEXT}} x
 +
{{Cl|FOR...NEXT|FOR}} x = 5 {{Cl|TO}} 11          'blue field in upper left quadrant (x = 5 to 13 to hold all 50 stars)
 +
    {{Cl|COLOR}} 15, 1            'sits above 4th white stripe
 +
    {{Cl|LOCATE}} x, 15
 +
    {{Cl|PRINT}} {{Cl|SPACE$}}(23)
 +
{{Cl|NEXT}} x
 +
DO
 +
    stop$ = {{Cl|INKEY$}}
 +
    {{Cl|FOR...NEXT|FOR}} x = 5 {{Cl|TO}} 10 {{Cl|STEP}} 2  '39 stars staggered across blue field (50 stars if x = 5 to 12)
 +
        w = 16
 +
        {{Cl|FOR...NEXT|FOR}} y = 1 {{Cl|TO}} 6      '5 rows of 6 stars
 +
            r = {{Cl|INT}}({{Cl|RND}} * 6)
 +
            {{Cl|IF...THEN|IF}} r = 0 {{Cl|THEN}} z = 31 {{Cl|ELSE}} z = 15
 +
            {{Cl|IF...THEN|IF}} stop$ = "" {{Cl|THEN}} {{Cl|COLOR}} z {{Cl|ELSE}} {{Cl|COLOR}} 15
 +
            {{Cl|LOCATE}} x, w
 +
            w = w + 4
 +
            {{Cl|PRINT}} "*";
 +
        {{Cl|NEXT}} y
 +
        w = 18
 +
        {{Cl|FOR...NEXT|FOR}} y = 1 {{Cl|TO}} 5      '5 rows of 5 stars
 +
            r = {{Cl|INT}}({{Cl|RND}} * 6)
 +
            {{Cl|IF...THEN|IF}} r = 0 {{Cl|THEN}} z = 31 {{Cl|ELSE}} z = 15
 +
            {{Cl|IF...THEN|IF}} stop$ = "" {{Cl|THEN}} {{Cl|COLOR}} z {{Cl|ELSE}} {{Cl|COLOR}} 15
 +
            {{Cl|LOCATE}} x + 1, w
 +
            w = w + 4
 +
            {{Cl|PRINT}} "*";
 +
        {{Cl|NEXT}} y
 +
    {{Cl|NEXT}} x
 +
    w = 16
 +
    {{Cl|FOR...NEXT|FOR}} y = 1 {{Cl|TO}} 6          '1 row of 6 stars
 +
            r = {{Cl|INT}}({{Cl|RND}} * 6)
 +
            {{Cl|IF...THEN|IF}} r = 0 {{Cl|THEN}} z = 31 {{Cl|ELSE}} z = 15
 +
        {{Cl|IF...THEN|IF}} stop$ = "" {{Cl|THEN}} {{Cl|COLOR}} z {{Cl|ELSE}} {{Cl|COLOR}} 15
 +
        {{Cl|LOCATE}} x, w
 +
        w = w + 4
 +
        {{Cl|PRINT}} "*";
 +
    {{Cl|NEXT}} y
 +
    t = {{Cl|TIMER}}
 +
    {{Cl|DO...LOOP|DO}} {{Cl|WHILE}} t + .2 >= {{Cl|TIMER}}: {{Cl|LOOP}}
 +
{{Cl|LOOP}} {{Cl|WHILE}} stop$ = ""
 +
{{Cl|COLOR}} 7, 0
 +
{{Cl|END}}
 +
{{CodeEnd}}{{small|Code by Solitaire}}
 +
:''Explanation:'' In [[SCREEN]] 0, the background color is only placed with the the printed text and spaces. [[CLS]] can color the entire screen.
  
  
==Navigation:==
+
{{PageSeeAlso}}
 +
* [[PRINT]], [[PRINT USING]]
 +
* [[STRING$]], [[CLS]]
 +
* [[SPC]], [[TAB]]
  
[[Keyword_Reference_-_Alphabetical|Go to Keyword Reference - Alphabetical]]
 
  
[[Keyword Reference - By usage|Go to Keyword Reference - By usage]]
+
{{PageNavigation}}

Latest revision as of 03:24, 21 July 2013

The SPACE$ function returns a STRING consisting of a number of space characters.


Syntax

result$ = SPACE$(count&)


Parameters

  • count& is the number of space characters to repeat. Cannot use negative values!


Usage:

  • Semicolons can be used to combine spaces with text STRING or numerical values.
  • Concatenation using + can be used to combine STRING text values only.
  • Spaces are often used to erase previous text PRINTs from the screen.
  • The function result can also be used to GET and PUT a number of bytes as zero characters: bytes$ = SPACE$(numbytes)
  • Spaces can also be made using SPC, CHR$(32) or STRING$(n%, 32).


Differences between QB64 and QB 4.5:

  • QB64 can use LONG values for count up to 2,147,483,647 while QB 4.5 could only use INTEGER values up to 32,767.


Example 1: How to space text in a PRINT statement using SPACE$ with string concatenation.

FOR count% = 0 TO 3 PRINT "abc" + SPACE$( count% ) + "def" NEXT count%

abcdef abc def abc def abc def


Example 2: In SCREEN 0 SPACE$ can be used to change the background color to make an American flag.

USA flag centered on screen with thin horizontal red & white stripes ' blue corner field with randomly twinkling stars CLS LOCATE 25, 1 PRINT "Press any key to stop twinkling"; COLOR , 4 z = 15 FOR x = 5 TO 19 '13 red & white stripes (x =5 to 21 for 15 stripes) IF z = 15 THEN z = 4 ELSE z = 15 COLOR , z LOCATE x, 15 PRINT SPACE$(55) NEXT x FOR x = 5 TO 11 'blue field in upper left quadrant (x = 5 to 13 to hold all 50 stars) COLOR 15, 1 'sits above 4th white stripe LOCATE x, 15 PRINT SPACE$(23) NEXT x DO stop$ = INKEY$ FOR x = 5 TO 10 STEP 2 '39 stars staggered across blue field (50 stars if x = 5 to 12) w = 16 FOR y = 1 TO 6 '5 rows of 6 stars r = INT(RND * 6) IF r = 0 THEN z = 31 ELSE z = 15 IF stop$ = "" THEN COLOR z ELSE COLOR 15 LOCATE x, w w = w + 4 PRINT "*"; NEXT y w = 18 FOR y = 1 TO 5 '5 rows of 5 stars r = INT(RND * 6) IF r = 0 THEN z = 31 ELSE z = 15 IF stop$ = "" THEN COLOR z ELSE COLOR 15 LOCATE x + 1, w w = w + 4 PRINT "*"; NEXT y NEXT x w = 16 FOR y = 1 TO 6 '1 row of 6 stars r = INT(RND * 6) IF r = 0 THEN z = 31 ELSE z = 15 IF stop$ = "" THEN COLOR z ELSE COLOR 15 LOCATE x, w w = w + 4 PRINT "*"; NEXT y t = TIMER DO WHILE t + .2 >= TIMER: LOOP LOOP WHILE stop$ = "" COLOR 7, 0 END

Code by Solitaire
Explanation: In SCREEN 0, the background color is only placed with the the printed text and spaces. CLS can color the entire screen.


See also



Navigation:
Go to Keyword Reference - Alphabetical
Go to Keyword Reference - By usage
Go to Main WIKI Page