"I'm just looking at your nametag, honest!"
YOUR SECOND GFA BASIC 3.XX MANUAL
- or -
HOW I LEARNED TO STOP WORRYING AND LOVE GFA-BASIC
CHAPTER SEVEN - STRINGS
by Han Kempen
The command INSTR(a$,b$,i) always returns '1' if a$=b$. For i=1
that's fine, but not for i>1. Don't blame me, I'm just the
The command RINSTR will miss the character you're looking for if
it is exactly on the spot you specified as the start-position:
PRINT RINSTR("abcd","c",3) ! "c" is missed on position 3
Adding one to the desired start-position is a solution, but you
can also leave the start-position out:
PRINT RINSTR("abcd","c",4) ! now "c" is found
PRINT RINSTR("abcd","c") ! this should work too
In the latter case you can always continue your search from the
first position you found, but you might as well use INSTR if
you're going to search the whole string.
LSET and RSET
If you use LSET or RSET, the string is padded with spaces:
PRINT a$ ! you'll see "12 ", not "12345"
In some publications this is mentioned as a bug. It's not a bug,
but a blunder in my official Dutch GFA-Manual where it is stated
that "12345" should be printed.
You can use RSET for right justification of columns:
FOR i=0 TO 9
You are informed already about the nasty garbage collection bug
(paragraph 'Storing data in RAM'), so I don't have to repeat that
sad story here.
If you are constructing a large string by adding one character
at the time with 't$=t$+char$' you should realize that the old
string is not replaced by the new string. Each time you add a
character, a new string is created while the old string is left
as garbage. You could prevent the clogging up of precious RAM by
first creating a string of the proper length with
't$=SPACE$(len)' and using 'MID$' to insert new characters. Now
only one string is used and there will be no garbage to collect
Counts the number of times a certain character occurs in a
PRINT @char_count(TRUE,txt$,"a") ! count the a's in txt$
If the flag is TRUE, the function distinguishes between upper
and lower case. If the flag is FALSE both upper and lower case
characters are counted. The same flag is also used in the
Functions Left$ and Right$.
Returns the part of the string in front of a search-string:
PRINT @left$(TRUE,txt$,search$) ! flag for upper/lower cs
The complete string is returned if the search-string is not
found. This Function is useful for parsing a text-string.
Returns a string with all capitals converted to lower case:
This is the reverse of UPPER$. As with UPPER$, the original
string is not changed.
Returns the part of the string following a search-string:
PRINT @right$(TRUE,txt$,search$) ! flag for upper/lower c
The nullstring is returned if the search-string is not found.
This Function is useful for parsing a text-string.
Returns the reverse of a string:
The original string is not changed. Note how garbage collection
is prevented in this Function by first declaring the new string
and then inserting the characters in reverse order. Adding one
character at a time with something like
'rev$=rev$+MID$(txt$,i,1)' would leave a lot of garbage.
Strip all leading space-characters from a string:
PRINT "#";@trim_left$(" trim left")
Strip all trailing space-chracters from a string:
PRINT @trim_right$("trim right ");"#"
The text of the articles is identical to the originals like they appeared in old ST NEWS issues. Please take into consideration that the author(s) was (were) a lot younger and less responsible back then. So bad jokes, bad English, youthful arrogance, insults, bravura, over-crediting and tastelessness should be taken with at least a grain of salt. Any contact and/or payment information, as well as deadlines/release dates of any kind should be regarded as outdated. Due to the fact that these pages are not actually contained in an Atari executable here, references to scroll texts, featured demo screens and hidden articles may also be irrelevant.