I have written a short program, which includes a Function which in turn includes a DO LOOP.
I get a 'Failure' at the line 'Function CCInput$() if I run the program in its present form. Why ???.
If instead I place the DO LOOP with the PBMain Function, the program runs fine, but if it is its own Function (which I prefer) it FAILS.
[Code]
#COMPILE EXE
'#INCLUDE "Win32API.inc"
'#RESOURCE "Hello.pbr"
'#DIM ALL
FUNCTION PBMAIN () AS LONG
BLACK% = 0: BLUE% = 1: GREEN% = 2: CYAN% = 3: RED% = 4: MAGENTA% = 5: brown% = 6: WHITE% = 7
grey% = 8: LBLUE% = 9: LGREEN% = 10: LCYAN% = 11: LRED% = 12: Lmagenta% = 13: yellow% = 14: brightwhite% = 15
bright% = 8
xx% = SCREENX
yy% = SCREENY
COLOR Yellow%,Magenta%
NoBorderRows% = 23
NoBorderColumns% = SCREENX - 3
'NoBorderRows% = 31
'NoBorderColumns% = 51
STDOUT CHR$(201);
STDOUT STRING$(NoBorderColumns% ,CHR$(205));
STDOUT CHR$(187)
FOR y% = 1 TO NoBorderRows%
STDOUT CHR$(186);
STDOUT STRING$(NoBorderColumns%," ");
STDOUT CHR$(186)
NEXT
STDOUT CHR$(200);
STDOUT STRING$(NoBorderColumns%,CHR$(205));
STDOUT CHR$(188);
LOCATE 7,20
'COLOR white%,Red%
STDOUT "Hello World ! ";
LOCATE 9,12
STDOUT " What is your first Name ? " ;
'mode$ = "A"
'DO
' g$ = INKEY$
' IF LEN(g$) = 1 THEN
' IF ASC(g$) = 13 THEN
' EXIT DO
' ELSEIF Mode$ = "" AND (ASC (g$) < 32 OR ASC(g$) > 127) THEN
' g$ = ""
' ELSEIF Mode$ = "A" AND (ASC(g$) < 65 OR ASC(g$) > 122) THEN
' g$ = ""
' ELSEIF Mode$ = "N" AND (ASC(g$) < 48 OR ASC(g$) > 57) THEN
' g$ = ""
' ELSEIF Mode$ = "N." AND (ASC (g$)< 46 OR ASC(g$) > 57 OR ASC(g$) = 47) THEN
' g$ = ""
' ELSEIF Mode$ = "AN" AND (ASC (g$) < 46 OR ASC(g$) > 122 OR ASC(g$) = 47) THEN
' g$ =""
' END IF
' PRINT g$;
' gg$ = gg$ + g$
' ELSEIF LEN( g$ ) = 2 THEN
' k% = ASC(g$,2)
' IF k% = 59 THEN gg$ = "F1"
' IF k% = 72 THEN gg$ = "Cursor UP"
' EXIT DO
' END IF
'LOOP
YourName$ = cc4Input$()
LOCATE 12,12
PRINT " You responded that your Name is : "; gg$
CURSOR OFF
WAITKEY$
END FUNCTION
FUNCTION cc4Input$() AS public
mode$ = "A"
DO
g$ = INKEY$
IF LEN(g$) = 1 THEN
IF ASC(g$) = 13 THEN
EXIT DO
ELSEIF Mode$ = "" AND (ASC (g$) < 32 OR ASC(g$) > 127) THEN
g$ = ""
ELSEIF Mode$ = "A" AND (ASC(g$) < 65 OR ASC(g$) > 122) THEN
g$ = ""
ELSEIF Mode$ = "N" AND (ASC(g$) < 48 OR ASC(g$) > 57) THEN
g$ = ""
ELSEIF Mode$ = "N." AND (ASC (g$)< 46 OR ASC(g$) > 57 OR ASC(g$) = 47) THEN
g$ = ""
ELSEIF Mode$ = "AN" AND (ASC (g$) < 46 OR ASC(g$) > 122 OR ASC(g$) = 47) THEN
g$ =""
END IF
PRINT g$;
gg$ = gg$ + g$
ELSEIF LEN( g$ ) = 2 THEN
k% = ASC(g$,2)
IF k% = 59 THEN gg$ = "F1"
IF k% = 72 THEN gg$ = "Cursor UP"
EXIT DO
END IF
LOOP
END FUNCTION
[\code]
I get a 'Failure' at the line 'Function CCInput$() if I run the program in its present form. Why ???.
If instead I place the DO LOOP with the PBMain Function, the program runs fine, but if it is its own Function (which I prefer) it FAILS.
[Code]
#COMPILE EXE
'#INCLUDE "Win32API.inc"
'#RESOURCE "Hello.pbr"
'#DIM ALL
FUNCTION PBMAIN () AS LONG
BLACK% = 0: BLUE% = 1: GREEN% = 2: CYAN% = 3: RED% = 4: MAGENTA% = 5: brown% = 6: WHITE% = 7
grey% = 8: LBLUE% = 9: LGREEN% = 10: LCYAN% = 11: LRED% = 12: Lmagenta% = 13: yellow% = 14: brightwhite% = 15
bright% = 8
xx% = SCREENX
yy% = SCREENY
COLOR Yellow%,Magenta%
NoBorderRows% = 23
NoBorderColumns% = SCREENX - 3
'NoBorderRows% = 31
'NoBorderColumns% = 51
STDOUT CHR$(201);
STDOUT STRING$(NoBorderColumns% ,CHR$(205));
STDOUT CHR$(187)
FOR y% = 1 TO NoBorderRows%
STDOUT CHR$(186);
STDOUT STRING$(NoBorderColumns%," ");
STDOUT CHR$(186)
NEXT
STDOUT CHR$(200);
STDOUT STRING$(NoBorderColumns%,CHR$(205));
STDOUT CHR$(188);
LOCATE 7,20
'COLOR white%,Red%
STDOUT "Hello World ! ";
LOCATE 9,12
STDOUT " What is your first Name ? " ;
'mode$ = "A"
'DO
' g$ = INKEY$
' IF LEN(g$) = 1 THEN
' IF ASC(g$) = 13 THEN
' EXIT DO
' ELSEIF Mode$ = "" AND (ASC (g$) < 32 OR ASC(g$) > 127) THEN
' g$ = ""
' ELSEIF Mode$ = "A" AND (ASC(g$) < 65 OR ASC(g$) > 122) THEN
' g$ = ""
' ELSEIF Mode$ = "N" AND (ASC(g$) < 48 OR ASC(g$) > 57) THEN
' g$ = ""
' ELSEIF Mode$ = "N." AND (ASC (g$)< 46 OR ASC(g$) > 57 OR ASC(g$) = 47) THEN
' g$ = ""
' ELSEIF Mode$ = "AN" AND (ASC (g$) < 46 OR ASC(g$) > 122 OR ASC(g$) = 47) THEN
' g$ =""
' END IF
' PRINT g$;
' gg$ = gg$ + g$
' ELSEIF LEN( g$ ) = 2 THEN
' k% = ASC(g$,2)
' IF k% = 59 THEN gg$ = "F1"
' IF k% = 72 THEN gg$ = "Cursor UP"
' EXIT DO
' END IF
'LOOP
YourName$ = cc4Input$()
LOCATE 12,12
PRINT " You responded that your Name is : "; gg$
CURSOR OFF
WAITKEY$
END FUNCTION
FUNCTION cc4Input$() AS public
mode$ = "A"
DO
g$ = INKEY$
IF LEN(g$) = 1 THEN
IF ASC(g$) = 13 THEN
EXIT DO
ELSEIF Mode$ = "" AND (ASC (g$) < 32 OR ASC(g$) > 127) THEN
g$ = ""
ELSEIF Mode$ = "A" AND (ASC(g$) < 65 OR ASC(g$) > 122) THEN
g$ = ""
ELSEIF Mode$ = "N" AND (ASC(g$) < 48 OR ASC(g$) > 57) THEN
g$ = ""
ELSEIF Mode$ = "N." AND (ASC (g$)< 46 OR ASC(g$) > 57 OR ASC(g$) = 47) THEN
g$ = ""
ELSEIF Mode$ = "AN" AND (ASC (g$) < 46 OR ASC(g$) > 122 OR ASC(g$) = 47) THEN
g$ =""
END IF
PRINT g$;
gg$ = gg$ + g$
ELSEIF LEN( g$ ) = 2 THEN
k% = ASC(g$,2)
IF k% = 59 THEN gg$ = "F1"
IF k% = 72 THEN gg$ = "Cursor UP"
EXIT DO
END IF
LOOP
END FUNCTION
[\code]
Comment