Das hat nichts mit der Case Anweisung zu tun, sondern mit der falschen Syntax der IFs.
Hier fehlt ein Leerzeichen
If Pinb.3 = 1then
If Pinb.3 = 1 Then
Hier fehlt das then
If Pinb.2 = 1
If Pinb.2 = 1 Then
Gruß
Rolf
Hi,
hab ein kleines Problem:
Ich will ein Displaymenü für eine Zündbox erstellen. Im Displaymenü kann man den kanal und die dazugehörige Zeit einstellen.
Warum geht aber eine If Bedingung in einer Case Bedingung nicht?
Ich hab mal einen Ausschnitt mit Kanal A+B angehängt.
Bin echt am verzweifeln .
Das hat nichts mit der Case Anweisung zu tun, sondern mit der falschen Syntax der IFs.
Hier fehlt ein Leerzeichen
If Pinb.3 = 1then
If Pinb.3 = 1 Then
Hier fehlt das then
If Pinb.2 = 1
If Pinb.2 = 1 Then
Gruß
Rolf
Hi,
Danke erst einmal. Hab jetzt alles verbessert, es gibt aber trotzdem noch Fehler:
Hier zeigt er Numeric Parameter expected an. Muss ich die Variablen anders anzeigen lassen?Code:Cls Locate 1 , 1 Lcd "Zündkanal" Menuewert Locate 2 , 1 Lcd "Zündabstand" A
Es sollte z.b. am Ende dastehen:
Zündkanal2
Zündabstand27
Dann findet er noch in Line 0 ein If then expected und ein End Select expected. Hab aber am Ende der Case-Bedingung End Select hingeschrieben.
Mfg,
Flo[/code]
Müsste heißen:Zitat von fofi1
Lcd "Zündkanal"; Menuewert
Lies dir mal die Bascom Hilfe genauer durch. Sonst fragst du noch wegen jeden Befehls.
Dies ist normalerweise ein Hinweis auf einen fehlenden If oder Select Case Befehl.Zitat von fofi1
Gruß
Rolf
Hi,
das mit dem ; hab ich in der Bascom hilfe nicht gefunden. Danke deswegen.
Edit: Jetzt zeigt er No more space for bit[LCD_No] und [syntax error token='{] an. Werd daraus ned schlau. Hier noch der verbesserte Prog Text:
Mfg,
FloCode:$regfile = "m8def.dat" $crystal = 1000000 Config Pinb.5 = Input 'Cursor Up Config Pinb.4 = Input 'Cursor Down Config Pinb.3 = Input 'Vergrößern der zeit Config Pinb.2 = Input 'Verkleinern der Zeit Dim A As Integer Dim B As Integer Dim C As Integer Dim D As Integer Dim E As Integer Dim F As Integer Dim G As Integer Dim H As Integer Dim I As Integer Dim J As Integer Dim K As Integer Dim L As Integer Dim M As Integer Dim N As Integer Dim O As Integer Dim P As Integer Dim R As Integer Dim S As Integer Dim T As Integer Dim Menuewert As Integer Menuewert = 0 Config Lcd = 16 * 2 Config Lcdpin = Pin , Db4 = Portc.0 , Db5 = Portc.1 , Db6 = Portc.2 , Db7 = Portc.3 , E = Portc.5 , E2 = Portc.6 , Rs = Portc.4 Do If Pinb.5 = 1 Then Menuewert = Menuewert + 1 End If If Pinb.4 = 1 Then Menuewert = Menuewert - 1 End If Select Case Menuewert Case 1 If Pinb.3 = 1 Then A = A + 1 End If If Pinb.2 = 1 Then A = A - 1 End If Cls Locate 1 , 1 Lcd "Zündkanal" ; Menuewert Locate 2 , 1 Lcd "Zündabstand" ; A Case 2 If Pinb.3 = 1 Then B = B + 1 End If If Pinb.2 = 1 Then B = B - 1 End If Cls Locate 1 , 1 Lcd "Zündkanal" ; Menuewert Locate 2 , 1 Lcd "Zündabstand" ; B End Select 'Das geht dann die Buchstaben bis Q durch Loop End
Füge mal dies noch oben bei den DIMs hinzu:
Dim ___lcdno As Byte
Gruß
Rolf
statt "Menuewert = Menuewert + 1"
kannst du auhc "incr Menuewert" schreiben
fürs subtraieren gibts auhcnoch ein befehle den weiß ich grad leider net
Hi,
danke jetzt funktioniert alles. @Bammel: du meinst increase und decrease, oder?
Incr xxx erhöht den Wert xxx um eins
und Decr um eins weniger.
jap genau das meine ich.. bewirkt zwar das selbe ist aber leichter zu schreiben. und vllt auch im endgültigen code schneller. aber das weis ich nicht
Lesezeichen