Select Case

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Verstehe Deine Frage nicht so ganz. Ich nehme oft

      Select Case AA
      Case 4: AA = 0 'Taste 0
      Case 3: AA = 1 'Taste 1
      Case 7: AA = 2 'Taste 2
      Case 11: AA = 3 'Taste 3
      Case 2: AA = 4 'Taste 4
      Case 6: AA = 5 'Taste 5
      Case 10: AA = 6 'Taste 6
      Case 1: AA = 7 'Taste 7
      Case 5: AA = 8 'Taste 8
      Case 9: AA = 9 'Taste 9
      Case 15: AA = 10 'Taste A
      Case 14: AA = 11 'Taste B
      Case 13: AA = 12 'Taste C
      Case 12: AA = 13 'Taste D
      Case 0: AA = 14 'Taste *
      Case 8: AA = 15 'Taste #
      End Select

      Hier weise ich zum Beispiel der Variable entsprechend ihrem
      Wert einen neuen Wert zu bei meinem Tastaturencoder.
    • HJH-MD wrote:

      Verstehe Deine Frage nicht so ganz.
      Ich verstehe sie schon.
      Er möchte bei verschiedenen Fällen die gleich Case-Anweisungen ausführen.


      katipefendi wrote:

      gibt es in BASCOM auch so eine Vereinfachung wie in VB.NET?
      Und nein, so geht das in Bascom nicht. Das lässt die Syntax-Prüfung des Compilers nicht zu.

      Man kann Bereiche abdecken wie

      Case 100 to 200

      oder

      Case Is <= 50

      aber solche verstreuten Einzelwerte wie
      Case 1,3,5,7 geht so nicht.

      Was du tun kannst ist folgendes.
      Du lagerst die Anweisungsliste, die für Case 1, 3, 5, 7 ausgeführt werden sollen in eine Sub aus und rufst die Sub dann auf.

      BASCOM Source Code

      1. Sub ImFall_1_3_5_7()
      2. 'Hier die Anweisungen rein, die im Fall 1,3,5,7 ausgeführt werden sollen.
      3. End Sub
      4. Sub ImFall_2_4_6_8()
      5. ' Hier die Anweisungen rein, die für 2, 4, 6, 8 ausgeführt werden sollen
      6. End Sub
      7. ' Dann
      8. Select Case Wert
      9. Case 1
      10. Call ImFall_1_3_5_7()
      11. Case 3
      12. Call ImFall_1_3_5_7()
      13. Case 5
      14. Call ImFall_1_3_5_7()
      15. Case 7
      16. Call ImFall_1_3_5_7()
      17. Case 2
      18. Call ImFall_2_4_6_8()
      19. Case 4
      20. Call ImFall_2_4_6_8()
      21. Case 6
      22. Call ImFall_2_4_6_8()
      23. Case 8
      24. Call ImFall_2_4_6_8()
      25. End Select
      Display All


      Wenn dir diese Lösung nicht gefällt, kannst du auch mit If-Anweisungen Arbeiten.


      BASCOM Source Code

      1. If Wert=1 or Wert=3 or Wert=5 or Wert=7 then
      2. ' Hier Code für 1, 3, 5, 7 einfügen
      3. ElseIf Wert=2 or Wert=4 or Wert=6 or Wert=8 then
      4. ' Hier Code für 2, 4, 6, 8 einfügen
      5. End If
      Wenns jetzt speziell um gerade und ungerade Zahlen geht, kannst du eine Rest-Berechnung machen mit MOD (Modulo)


      BASCOM Source Code

      1. If Wert Mod 2 = 1 then ' ungerade Zahlen
      2. ' Hier Code für ungerade Zahlen
      3. Else
      4. ' Hier Code für gerade Zahlen
      5. End If

      Wenn du was anderes im Sinn hast, solltest du vielleicht deine Frage Präziser formulieren und darstellen, was du eigentlich erreichen willst.
    • Hallo Zusammen,

      genau so habe ich es gemacht.


      BASCOM Source Code

      1. Select Case Wert
      2. Case 1
      3. Call ImFall_1_3_5_7()
      4. Case 3
      5. Call ImFall_1_3_5_7()
      6. Case 5
      7. Call ImFall_1_3_5_7()
      8. Case 7
      9. Call ImFall_1_3_5_7()
      10. Case 2
      11. Call ImFall_2_4_6_8()
      12. Case 4
      13. Call ImFall_2_4_6_8()
      14. Case 6
      15. Call ImFall_2_4_6_8()
      16. Case 8
      17. Call ImFall_2_4_6_8()
      18. End Select
      Display All
      Aber das ist halt zuviel Code um die selbe Methode auszuführen.

      Ok, danke trotzdem an alle
      Katip