Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C Quellcode formatieren: <code>Quellcode</code> BASIC Quellcode formatieren: <basic>Quellcode</basic> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! -> I > 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 ;-))