Archiv verlassen und diese Seite im Standarddesign anzeigen : IF Then Else Probleme
oderlachs
28.06.2013, 19:35
Hallo Kenner des Fachs !
Nun ich bin nicht gerade ganz "firm" in Sachen Bascom, aber das mir eine if..else solche Probleme macht hätte ich nie gedacht.
Hier mal mein Code, und ich weiss nicht warum.
Variablen festlegen usw...
DIM _sec as Byte
DIM _min as Byte
DIM _hour as Byte
...
DIM Ph1 as Byte
DIM Pm1 as Byte
DIM Ph2 as Byte
DIM Pm2 as Byte
...
Ph1 = 8
Pm1 = 30
Ph2 = 8
Pm2 = 31
...
Hier nun die Auswertung, es soll entweder PortB.0 HIGH oder LOW sein, bzw PortB.1
TestTime:
If _HOUR = Ph1 AND _MIN = Pm1 then SET PORTB.0
else RESET PORTB.0
end IF
if _HOUR = Ph2 AND _MIN = Pm2 then SET PORTB.1
else RESET PORTB.1
end if
return
worüber sich der Compiler über die IF..Else Auswertungen beschwert : IF THEN expected ???
Vielleicht ist wer so nett, mir ein wenig helfen zu wollen.
Mit besten Grüssen und ein grosses Danke schon vorne weg...
Gerhard
Hey Gerhard,
ich glaube das muss so lauten:
$regfile = "m32def.dat"
Dim A As Byte
Dim B As Byte
A = 10
B = 11
If A = 10 And B = 10 Then
Print "Hallo"
Else
Print "Nicht Hallo"
end IF
MagicWSmoke
28.06.2013, 19:47
Es gibt unterschiedliche Formen der Anwendung, als Einzeiler, welcher ohne End If auskommt und als Befehlsabfolge zwischen der If Then / Else /End If Anweisung.
Mach's einfach so wie in der Hilfe.
- - - Aktualisiert - - -
Und ich kann mich irren aber muss das nicht heißen "If _HOUR == Ph1"?
Es wird im Moment wieder Bascom gesprochen :D
Was Du meinst, ist C, da macht's 'nen Unterschied.
HeXPloreR
28.06.2013, 19:48
Hallo
versuchs mal so:
TestTime:
If _HOUR = Ph1 AND _MIN = Pm1 then
SET PORTB.0
else
RESET PORTB.0
end IF
if _HOUR = Ph2 AND _MIN = Pm2 then
SET PORTB.1
else
RESET PORTB.1
end if
return
oh shit ..zu spät ;)
..
oderlachs
28.06.2013, 19:58
Ich Danke Euch allen !!! Ja ich mach zu wenig in Bascom, sonst GCC oder Arduino-C . Ich habe es schon selber rausgefunden, mit Müseligem Auskommentieren habe ich es so, wie HexPlorer es postete, auch hinbekommen...
Danke nochmals ging ja l suuperschnell die Hilfe !!
Gerhard
Es gibt unterschiedliche Formen der Anwendung, als Einzeiler, welcher ohne End If auskommt und als Befehlsabfolge zwischen der If Then / Else /End If Anweisung.
Mach's einfach so wie in der Hilfe.
- - - Aktualisiert - - -
Es wird im Moment wieder Bascom gesprochen :D
Was Du meinst, ist C, da macht's 'nen Unterschied.
Ja auch gerade gesehen :D
Hab dann doch mal Sicherheitshalber Bascom angeschmissen und geschaut :)
War mir selber nicht ganz so sicher....dann gucke ich lieber noch mal nach!
HeXPloreR
28.06.2013, 20:07
So soll es sein, schön :)
...ich stolper auch manchmal noch darüber das ich hinter dem else immer gerne gleich die Anweisung schreibe möchte.
Was war jetzt der Fehler?
Zeilenumbruch zwischen then/else und dem Befehl war zwingend, oder wie?
Gruß Ryoken
oderlachs
28.06.2013, 22:53
@Ryoken: Ja so geht es !
'-------------------------------------------------------------------------------
TestTime:
If _HOUR = Ph1 AND _MIN = Pm1 then
SET PORTB.0
else
RESET PORTB.0
end IF
if _HOUR = Ph2 AND _MIN = Pm2 then
SET PORTB.1
else
RESET PORTB.1
end if
return
'-------------------------------------------------------------------------------
HeXPloreR
29.06.2013, 08:46
@Ryoken: Ja, Zeilenumbruch ist zwingend nötig wenn man über mehrer Zeilen eine einzige IF abhandeln möchte, ansonsten geht es auch noch so wie MagicWSmoke schreibt - dann ohne "end if".
Das geht aber auch nur wenn jeweils eine einzige Anweisung ausgeführt werden soll:
TestTime:
If _HOUR = Ph1 AND _MIN = Pm1 then SET PORTB.0 else RESET PORTB.0 'end IF 'kann dann raus bleiben
If _HOUR = Ph2 AND _MIN = Pm2 then SET PORTB.1 else RESET PORTB.1 'end if 'kann dann raus bleiben
return
oderlachs
29.06.2013, 09:27
Ja ich weiss schon warum ich, jetzt als "Zeh"-Orientierter, Bascom nur in Ausnahmefälle benutze. Sonst bring ich zuViel durcheinander...mich darum von ASSR auch ganz verabschiedet habe..
Gerhard
Meine (Fach-)Buchangebote (http://robot.oderlachs.de/buchladen/buchladen.html) im Aufbau noch...
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.