Problem with IF...THEN...ELSEIF + DO ... LOOP + WHILE ... WEND - Karelius - 06-15-2009
Hi! I've a problem with this code:
Code: Sessione = TRUE
WHILE Sessione
'Barra di stato
Future.FillBox 2, Lx - 19, Rx - 2, Lx - 2, RGB2Color&(0, 0, 32)
Future.Box 1, Lx - 20, Rx - 1, Lx - 1, RGB2Color&(0, 128, 192)
'Barra del menu
Future.FillBox 2, Lx - 49, Rx - 2, Lx - 21, RGB2Color&(0, 24, 64)
Future.Box 1, Lx - 50, Rx - 1, Lx - 20, RGB2Color&(0, 128, 192)
Future.LoadBMP "\hawk\skin\" + skin$ + "\user.bmp", 5, Lx - 47
TIMER ON
ON TIMER(1) GOSUB Stato
Future.MouseOn
DO
    Future.UpdateMouse
    IF Future.MouseX% > 5 AND Future.MouseX% < 29 AND Future.MouseY% > Lx - 47 AND Future.MouseY% < Lx - 23 AND Future.MouseB% = 0 THEN
        Future.Print 5, Lx - 18, "Amministra il sistema", RGB2Color&(255, 255, 255), -1
    ELSEIF Future.MouseX% > 5 AND Future.MouseX% < 29 AND Future.MouseY% > Lx - 47 AND Future.MouseY% < Lx - 23 AND Future.MouseB% = 1 THEN
        Future.MouseOff
        Future.FillBox 33, Lx - 49, Rx - 2, Lx - 21, RGB2Color&(0, 52, 92)
        Future.Box 32, Lx - 50, Rx - 1, Lx - 20, RGB2Color&(0, 128, 192)
        Future.LoadBMP "\hawk\skin\" + skin$ + "\update.bmp", 37, Lx - 47
        Future.LoadBMP "\hawk\skin\" + skin$ + "\esci.bmp", 65, Lx - 47
        Future.MouseOn
        DO
            Future.UpdateMouse
            IF Future.MouseX% > 37 AND Future.MouseX% < 61 AND Future.MouseL% > Lx - 47 AND Future.MouseY% < Lx - 23 AND Future.MouseB% = 0 THEN
                Future.Print 5, Lx - 18, "Visualizza info aggiornamenti", RGB2Color&(255, 255, 255), -1
            ELSEIF Future.MouseX% > 37 AND Future.MouseX% < 61 AND Future.MouseL% > Lx - 47 AND Future.MouseY% < Lx - 23 AND Future.MouseB% = 1 THEN
                END
            ELSEIF Future.MouseX% > 65 AND Future.MouseX% < 89 AND Future.MouseL% > Lx - 47 AND Future.MouseY% < Lx - 23 AND Future.MouseB% = 0 THEN
                Future.Print 5, Lx - 18, "Esci da Hawk", RGB2Color&(255, 255, 255), -1
            ELSEIF Future.MouseX% > 65 AND Future.MouseX% < 89 AND Future.MouseL% > Lx - 47 AND Future.MouseY% < Lx - 23 AND Future.MouseB% = 1 THEN
                END
            END IF
        LOOP WHILE INKEY$=""
    END IF
   Â
LOOP WHILE INKEY$ = ""
Sessione = FALSE
Future.MouseOff
WEND
in the second DO...LOOP, the "if...then...elseif" don't work!!! Why?
Re: Problem with IF...THEN...ELSEIF + DO ... LOOP + WHILE ... WEND - Moneo - 06-16-2009
Just a quick look a your code shows that you have many undeclared functions, as well as undefined variables.
Maybe you didn't show us the entire code, without which it's hard to determine your problem.
Regards..... Moneo
Re: Problem with IF...THEN...ELSEIF + DO ... LOOP + WHILE ... WEND - Clippy - 06-16-2009
I'm suprised that you don't get an "expression too complex!" error!
WHY do you need the second DO LOOP? Nothing changes........and what happens if none of the IF and ELSEIF statements are True? You get stuck there until a key is pressed.
I think that you have too many ELSEIF comparisons. Some portions are repeated with additional comparisons.
My suggestion: Start from the left and make that one IF statement. Then use the next comparison if that is true to make further comparisons.
Code: IF Future.MouseX% > 37 AND Future.MouseX% < 61 THEN
ELSEIF will find the first comparison that is True, no matter how much is added to later comparisons!
Re: Problem with IF...THEN...ELSEIF + DO ... LOOP + WHILE ... WEND - Karelius - 06-16-2009
This is my entire code:
Code: '$INCLUDE: 'FUTURE.BI'
DEFINT A-Z
DIM Rx AS INTEGER, Lx AS INTEGER, Bit AS INTEGER
CONST FALSE = 0, TRUE = -1
Sessione = TRUE
ON ERROR GOTO Errore
'Apertura registri di configurazione
OPEN "\hawk\system\svga.cfg" FOR INPUT AS #1
    INPUT #1, Rx
    INPUT #1, Lx
    INPUT #1, Bit
OPEN "\hawk\system\sfondo.cfg" FOR INPUT AS #2
    INPUT #2, sfondo$
OPEN "\hawk\system\skin.cfg" FOR INPUT AS #3
    INPUT #3, skin$
'Impostazione Video
SetScreenMode Rx, Lx, Bit
Future.CLS 0
'Avvio sfondo
IF sfondo$ <> "nessuno" THEN
    IF Rx < 800 THEN
        Future.LoadBMP "\hawk\sfondi\640\" + sfondo$, 0, 0
    ELSEIF Rx = 800 THEN
        Future.LoadBMP "\hawk\sfondi\800\" + sfondo$, 0, 0
    ELSEIF Rx > 800 THEN
        Future.LoadBMP "\hawk\sfondi\1024\" + sfondo$, 0, 0
    END IF
END IF
WHILE Sessione
'Barra di stato
Future.FillBox 2, Lx - 19, Rx - 2, Lx - 2, RGB2Color&(0, 0, 32)
Future.Box 1, Lx - 20, Rx - 1, Lx - 1, RGB2Color&(0, 128, 192)
'Barra del menu
Future.FillBox 2, Lx - 49, Rx - 2, Lx - 21, RGB2Color&(0, 24, 64)
Future.Box 1, Lx - 50, Rx - 1, Lx - 20, RGB2Color&(0, 128, 192)
Future.LoadBMP "\hawk\skin\" + skin$ + "\user.bmp", 5, Lx - 47
TIMER ON
ON TIMER(1) GOSUB Stato
Future.MouseOn
DO
    Future.UpdateMouse
    IF Future.MouseX% > 5 AND Future.MouseX% < 29 AND Future.MouseY% > Lx - 47 AND Future.MouseY% < Lx - 23 AND Future.MouseB% = 0 THEN
        Future.Print 5, Lx - 18, "Amministra il sistema", RGB2Color&(255, 255, 255), -1
    ELSEIF Future.MouseX% > 5 AND Future.MouseX% < 29 AND Future.MouseY% > Lx - 47 AND Future.MouseY% < Lx - 23 AND Future.MouseB% = 1 THEN
        Future.MouseOff
        Future.FillBox 33, Lx - 49, Rx - 2, Lx - 21, RGB2Color&(0, 52, 92)
        Future.Box 32, Lx - 50, Rx - 1, Lx - 20, RGB2Color&(0, 128, 192)
        Future.LoadBMP "\hawk\skin\" + skin$ + "\update.bmp", 37, Lx - 47
        Future.LoadBMP "\hawk\skin\" + skin$ + "\esci.bmp", 65, Lx - 47
        Future.MouseOn
        DO
            Future.UpdateMouse
            IF Future.MouseX% > 37 AND Future.MouseX% < 61 AND Future.MouseL% > Lx - 47 AND Future.MouseY% < Lx - 23 AND Future.MouseB% = 0 THEN
                Future.Print 5, Lx - 18, "Visualizza info aggiornamenti", RGB2Color&(255, 255, 255), -1
            ELSEIF Future.MouseX% > 37 AND Future.MouseX% < 61 AND Future.MouseL% > Lx - 47 AND Future.MouseY% < Lx - 23 AND Future.MouseB% = 1 THEN
                END
            ELSEIF Future.MouseX% > 65 AND Future.MouseX% < 89 AND Future.MouseL% > Lx - 47 AND Future.MouseY% < Lx - 23 AND Future.MouseB% = 0 THEN
                Future.Print 5, Lx - 18, "Esci da Hawk", RGB2Color&(255, 255, 255), -1
            ELSEIF Future.MouseX% > 65 AND Future.MouseX% < 89 AND Future.MouseL% > Lx - 47 AND Future.MouseY% < Lx - 23 AND Future.MouseB% = 1 THEN
                END
            END IF
        LOOP WHILE INKEY$ = ""
    END IF
   Â
LOOP WHILE INKEY$ = ""
Sessione = FALSE
Future.MouseOff
WEND
CLOSE #1, #2, #3
END
Errore: CHAIN "\hawk\system\error.lib"
Stato: Future.MouseOff
Future.FillBox 2, Lx - 19, Rx - 2, Lx - 2, RGB2Color&(0, 0, 32)
Future.MouseOn
RETURN
For Lx, i can not remove because the position where I click is incorrect.
Re: [RESOLVED] Problem with IF...THEN...ELSEIF + DO ... LOOP + WHILE ... WEND - Karelius - 06-16-2009
i find the error ... The problem is Futue.MouseL% ... Thanks for allÂ
|