My attempt at an input function for console apps..
BlitzMax Forums/BlitzMax Programming/My attempt at an input function for console apps..
| ||
has a bit of a problem...
While Not AppTerminate()
Local inp:String = InputA$("")
If inp <> Null
WriteStdout "~q" + inp + "~q"
EndIf
Delay 1
Wend
Function InputA$( prompt$=">" )
Global status:Int = 0
Global str$,buf:Byte[1024],p:Int,n:Byte
If status = 0
StandardIOStream.WriteString prompt
StandardIOStream.Flush
EndIf
status = 1
If StandardIOStream.Read( Varptr n,1 )<>1 status=-1
If n=0 status=-1
If n=10 status=-1
If n=13 status=-1
buf[p]=n ; p:+1
If p<>buf.length status=-1
str:+String.FromBytes(buf,p)
p=0
If status=-1
DebugLog ""
If p str:+String.FromBytes(buf,p)
Local tstr$ = str
status=0 ; str$=Null ; p=0 ; n=0 ; buf=Null
buf = New Byte[1024]
Return str
EndIf
Return Null
End Function
What am I doing wrong here? |
| ||
Oh, and here is the code that the original Input function calls.
'IN BRL.STANDARDIO LINE 56
Function Input$( prompt$=">" )
StandardIOStream.WriteString prompt
StandardIOStream.Flush
Return StandardIOStream.ReadLine()
End Function
'IN BRL.STREAM LINE 380
Method ReadLine$()
Local str$,buf:Byte[1024],p
Repeat
Local n:Byte
If Read( Varptr n,1 )<>1 Exit
If n=0 Exit
If n=10 Exit
If n=13 Continue
buf[p]=n ; p:+1
If p<>buf.length Continue
str:+String.FromBytes(buf,p)
p=0
Forever
If p str:+String.FromBytes(buf,p)
Return str
End Method
|
| ||
| Aww comon, theres gotta be some IO genius out there.. |
| ||
| I've gone through BRL.Blitz(ReadStdIn/WriteStdOut) and BRL.StandardIO(StandardIOStream.ReadLine/Print), successfully communicated between apps, but there doesn't seem to be any command that doesn't stick the program in a loop. EDIT: Brucey, when is Curses gonna be finished? :(( |
| ||
| when is Curses gonna be finished? :(( Once I get most of wxMax out of the way - which is going well :-) |