PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : IF Then Else Probleme



oderlachs
28.06.2013, 18: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

Kampi
28.06.2013, 18:44
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, 18: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, 18: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, 18: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

Kampi
28.06.2013, 18:58
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, 19: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.

Ryoken
28.06.2013, 21:25
Was war jetzt der Fehler?
Zeilenumbruch zwischen then/else und dem Befehl war zwingend, oder wie?


Gruß Ryoken

oderlachs
28.06.2013, 21: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, 07: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, 08: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...