Open ghost opened 3 years ago
Hi!
Does fast basic have anything similar to instr, instr$? could not figure out if it had this or now.
Not currently. Currently, FastBasic is more geared to game programming, where IMHO string searching is not used much, so I have not tough on adding it.
Do you have a specific use case? perhaps a simple loop could be all it is needed, it is not that slow:
A$ = "a big text with many words to search into"
B$ = "any"
for i=LEN(A$)-LEN(B$) to 1 step -1
if B$ = A$[i,LEN(B$)] then exit
next
if i
? "Found at "; i
else
? "Not found"
endif
Have Fun!
I am porting a text adventure game, and uses Instr, Mid$, Left$, Right$, and few other string related functions. I plan to simulate the function with either a USR call or subroutine like you have.
Hi!
I am porting a text adventure game, and uses Instr, Mid$, Left$, Right$, and few other string related functions. I plan to simulate the function with either a USR call or subroutine like you have.
With current FastBasic (git version), you could write something like this (this is like C inside Basic):
A$ = "a big text with many words to search into"
B$ = "any"
i=0
EXEC Instr &A$, &B$, &i
if i
? "Found at "; i
? "->"; A$[i]
else
? "Not found"
endif
' Parameters:
' StrBase: address of string to search into
' StrSearch: address of string to find
' Return: address of integer variable with the result
PROC Instr StrBase StrSearch StrReturn
for StrPos=LEN($(StrBase))-LEN($(StrSearch)) to 1 step -1
if $(StrSearch) = $(StrBase)[StrPos,LEN($(StrSearch))] then Exit
next
dpoke StrReturn, StrPos
ENDPROC
Note that "&VAR" is the same as "ADR(VAR)", and $(address) is the string at address. This means that " $(&(A$))" is the same as "A$", and "& $(X)" is the same as "X".
Does fast basic have anything similar to instr, instr$? could not figure out if it had this or now.