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) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum