Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

Re: If Anweisung reagiert falsch Kategorie: Programmierung Basic (von HPausL - 15.04.2016 21:25)


Hallo zusammen,
eigentlich wollte ich nur eine Menü Steuerung schreiben die,
wenn sie am oberen Ende(OGR) angekommen ist von neuen am unteren Ende(UGR) neu startet.
Ebenso anders herum.

Mit positiven Zahlen ist das kein Problem.
Mit negativen schon. Wieso? Ich hab da keine Erklärung.
Jetzt kommt ihr ins Spiel.
Kann mich bitte jemand aufklären was ich falsch mache.

In der Funktion Sub MINUS() habe ich die UGR(Untergrenze) nochmals an die
lokale Variable u (Integer) übergeben.
Wenn ich nun in der folgenden IF Anweisung u anstatt UGR benütze, funktioniert es.
Wird an dieser Stelle aber UGR anstatt u programmiert, reagiert die If Anweisung falsch

Kurios ist, wenn ich in der Funktion Sub Plus() durchzähle und über 2 komme,
wird die OGR aktiv, setzt y auf UGR (-2) und inkrementier munter weiter.
Hier scheint es zu funktionieren, und es ist kein nochmaliges umladen der
�bergabe Variable OGR nach z.B. o nötig. hmmmmm

WIIIEEESOOO?????

Hier mein Code: (keine Leerzeilen etc. ist nur ein Test)
Board: C-Control Pro AVR32

Dim ERG As Integer
Sub main()
    Port_Attribute(PORT_T5, PORT_ATTR_INPUT)
    Port_Attribute(PORT_T4, PORT_ATTR_INPUT)
    Port_Attribute(PORT_LED1, PORT_ATTR_OUTPUT Or PORT_ATTR_INIT_LOW)
    Port_Attribute(PORT_LED2, PORT_ATTR_OUTPUT Or PORT_ATTR_INIT_LOW)
    Do While True
        If Port_ReadBit(PORT_T5) = False Then
            ERG = Plus(2,-2,ERG)
        End If
        Port_WriteBit(PORT_LED1, PORT_OFF)
        If Port_ReadBit(PORT_T4) = False Then
            ERG = Minus(2,-2,ERG)
        End If
        Port_WriteBit(PORT_LED2, PORT_OFF)
        Msg_WriteInt(ERG)
        Msg_WriteChar(13)
        AbsDelay(100)
    End While
End Sub
Sub Plus(OGR As Integer, UGR As Integer, x As Integer) As Integer
    Dim y As Integer
    y = x + 1
    If y > OGR Then
        y = UGR
    Else ' nicht unbedingt nötig
        y = y ' dto.
    End If
    Port_WriteBit(PORT_LED1, PORT_ON) ' nur zum prüfen ob ich in die richtige Funktion springe
    AbsDelay(100)
    Return y
End Sub
Sub Minus(OGR As Integer, UGR As Integer, x As Integer) As Integer
    Dim y As Integer
    Dim u As Integer
    u = UGR ' hier wird UGR "NOCHMALS" an u übergeben
    y = x - 1
    If y < u Then ' Mit UGR reagiert die If Anweisung falsch. Mit u funktioniert es. Wieso???
        y = OGR
    Else ' nicht unbedingt nötig
        y = y ' dto.
    End If
    Port_WriteBit(PORT_LED2, PORT_ON) ' nur zum prüfen ob ich in die richtige Funktion springe
    AbsDelay(100)
    Return y
End Sub

Vielen Dank schon mal im Voraus, ein verzweifelter HPausL ;-))


    Antwort schreiben


Antworten:

Re: If Anweisung reagiert falsch (von Daneie - 17.04.2016 13:03)
    Re: If Anweisung reagiert falsch (von Daneie - 17.04.2016 13:12)
        Re: If Anweisung reagiert falsch (von HPausL - 17.04.2016 13:28)
            Re: If Anweisung reagiert falsch (von Torsten - 17.04.2016 16:01)
                Re: If Anweisung reagiert falsch (von PeterS - 20.04.2016 19:26)
                    Re: If Anweisung reagiert falsch (von Danei - 20.04.2016 21:04)
                       Re: If Anweisung reagiert falsch (von UlliS - 2.05.2016 11:53)
                Re: If Anweisung reagiert falsch (von HPausL - 18.04.2016 15:26)