Wie am besten viele If then Else Anweisungen ersetzen?

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Wie am besten viele If then Else Anweisungen ersetzen?

      Hallo Forum,

      bisher konnte ich meine Problemchen mit Bascom durch reines Mitlesen hier im Forum oder durch Internetrecherche selbst lösen, aber jetzt benötige ich mal Eure Hilfe!

      Ich mache Input über eine AT-Tastatur ( Textzeilen ) um diese später wieder auf einem LCD auszugeben. Dabei wird abgefragt:
      Bank (Wertebereich A-H )
      Key ( Wertebereich 1-8 )
      macro_no. ( Wertebereich 1-4 )

      Den eingegeben Text habe ich in der Variablen kb_textstring. Jetzt würde ich den gerne in Abhängigkeit der oben abgefragten Werte zuordnen:

      If Key = 1 AND Bank = "A" And macro_no = 1 Then
      1A1 = kb_textstring
      Endif
      If Key = 1 AND Bank = "A" And macro_no = 2 Then
      1A2 = kb_textstring
      Endif
      If Key = 1 AND Bank = "A" And macro_no = 3 Then
      1A3 = kb_textstring
      Endif
      If Key = 1 AND Bank = "A" And macro_no = 4 Then
      1A4 = kb_textstring
      Endif

      If Key = 2 AND Bank = "A" And macro_no = 1 Then
      2A1 = kb_textstring
      Endif
      If Key = 2 AND Bank = "A" And macro_no = 2 Then
      2A2 = kb_textstring
      Endif
      If Key = 2 AND Bank = "A" And macro_no = 3 Then
      2A3 = kb_textstring
      Endif
      If Key = 2 AND Bank = "A" And macro_no = 4 Then
      2A4 = kb_textstring
      Endif

      usw.
      Das wären 256 If Anweisungen bis ich die letze Variable 8H4 einem Textstring zugeordnet hätte. Ok, ich weiß, das macht man mit Arrays oder Select Case,
      aber egal was ich auch ausprobiert habe ich bin immer irgendwie hängen geblieben. Irgendwie fehlt mir das logische Verständnis oder die Übung das in einem Array umzusetzen. Letztendlich soll die Ausgabe wie folgt erfolgen:
      On Taster_1
      Locate 1,1
      LCD 1A1
      Locate 2,1
      LCD 1A2
      Locate 3,1
      LCD 1A3
      Locate 4,1
      LCD 1A4

      ON Taster_2
      Locate 1,2
      LCD 2A1
      Locate 2,1
      LCD 2A2

      usw. bis Taster 8 und Bank H

      On Taster_8
      Locate 1,1
      LCD 8H1
      Locate 2,1
      LCD 8H2
      Locate 3,1
      LCD 8H3
      Locate 4,1
      LCD 8H4

      Wer gibt mir ein paar Denkanstöße für eine elegantere Lösung?
      Danke Vorab
      8TO8
    • 8TO8 schrieb:

      Ok, ich weiß, das macht man mit Arrays oder Select Case
      Aber genau so ist IMHO der praktikabelste Weg.
      Ich würde das ganze sogar noch in eine For-Next-Schleife packen, dann wird der Code auch noch weniger.
      Es gibt in BasCom seit längeren ja auch mehrdimmensionale Variablen wie z.B. A(X,Y,Z).
      Dabei muss nur beachtet werden, dass es noch immer einzelne Funktionen gibt, die damit noch immer nicht klar kommen.
      Da müsste man dann den Inhalt der mehrdimmensionalen Variable vorher in eine Hilfsvariable kopieren um damit korrekt arbeiten zu können (z.B. X=A(2,4,1)
    • Guten Morgen,

      zunächst einmal vielen Dank für die vielen Hinweise. Gerne möchte ich die gewünschte Funktion noch einmal erklären:

      Das Gerät, wenn es fertig ist, hat 10 Taster, acht davon zur Ausgabe der Macro Texte, eine Taste zur Umschaltung der Macro Bänke und eine Taste um in den Abfragemodus für die Texteingabe zu gelangen. Das Gerät macht nichts anderes als auf Knopfdruck die zuvor eingegebenen und abgespeicherten Texte M1-4 jeweils auf dem Display auszugeben. Der Ausgang des Gerätes wird mit einer Lichtsteuerkonsole verbunden und ruft dort die entsprechenden Macros über einen Remote-Eingang ab.

      Eingabe Bank.jpgEingabe Key.jpgEingabe Macro_no..jpgAusgabe.jpg

      @tschoatsch: Da es sich um ASCII Character handelt, kann ich auch deren Hex Werte verwenden

      @Zitronenfalter: Das mit dem mehrdimensionalem Array hört sich gut an, aber deswegen bin ich ja hier, mir fehlt einfach das Verständnis wie ich meine 3 Input Variablen da in das Verhältnis setze. Ein Beispiel mit meinen Variablennamen wäre klasse damit bei mir der Groschen fällt ;) . Das mit der Hilfsvariable ist eine gute Idee, da denke ich mal darüber nach.

      @Michael: Es sind tatsächlich nur 256 Texte, abgelegt zu jeweils vier pro Ausgabe, 8 davon pro Bank (Abruf T1-T8) und das auf 8 Bänken A-H . Mir geht es hier wirklich nur um die Funktion die 256 If Abfragen eleganter bzw. sauber zu lösen.

      Danke nochmal!
    • Die Indizes eines arrays sollten immer mit dem Wert von 'base' beginnen, sonst braucht man unnötig viel Speicherplatz. Ascii-Werte sind da jetzt nicht so toll :S
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Hallo djmsc,

      das ganze Programm posten führt wohl eher nicht zum Ziel und wird unübersichtlich, das Laden der Variablen is EEprom beim Programmstart, die Tastenabfragen mit Short und longpress, die Tastenledsansteuerung über I²C usw. Denke mal, ich poste lediglich die Abfrage / Eingabe der Texte und deren Zuordnung mit IF Then ( Mein Problem ) zu den Variablen:

      BASCOM-Quellcode

      1. '****************************************** SUB MENU4 **********************************************
      2. SUB Menu4:
      3. Config Keyboard = Pind.2 , Data = Pind.0 , Keydata = Keydata
      4. kb_bytevalue = 0
      5. Count1 = 5
      6. cls
      7. Locate 1,1
      8. LCD "INPUT TEXT MACRO: " ; Macro_no ; " "
      9. Locate 2,1
      10. LCD "--------------------"
      11. Locate 3,1
      12. LCD "BANK: "; Bank ; " " ; "---> " ; "KEY: " ; key ; " "
      13. Locate 4,1
      14. LCD "M" ; Macro_no ; "" ; ":"
      15. cursor on blink
      16. DO
      17. If Flag1 = 1 and kb_bytevalue = 200 Then
      18. call Help
      19. endif
      20. If Flag = 1 and kb_bytevalue = &H76 Then
      21. RETURN
      22. endif
      23. If Flag1 = 1 Then
      24. Strlen = len(Kb_textstring)
      25. Kb_textstring = Kb_textstring + Chr(kb_bytevalue)'Chr(kb_character)
      26. Delchars kb_textstring, 8
      27. Locate 4, 5
      28. LCD kb_textstring
      29. If kb_bytevalue = 8 then
      30. Strlen = strlen +4
      31. Locate 4, strlen
      32. LCD " "
      33. Strlen = len(Kb_textstring)
      34. Delchar kb_textstring, strlen
      35. shiftcursor left
      36. Strlen = len(Kb_textstring)
      37. Locate 4,5
      38. lcd kb_textstring
      39. Flag1 = 0
      40. endif
      41. Flag1 = 0
      42. endif
      43. loop until kb_bytevalue = 13
      44. Delchars kb_textstring, 13
      45. call Auswertung
      46. cls
      47. End Sub
      48. '--------------------------------------- SUB AUSWERTUNG ------------------------------------------
      49. Sub Auswertung:
      50. If Key = 1 AND Bank = "A" And macro_no = 1 Then
      51. 1A1 = kb_textstring
      52. Endif
      53. If Key = 1 AND Bank = "A" And macro_no = 2 Then
      54. 1A2 = kb_textstring
      55. Endif
      56. If Key = 1 AND Bank = "A" And macro_no = 3 Then
      57. 1A3 = kb_textstring
      58. Endif
      59. If Key = 1 AND Bank = "A" And macro_no = 4 Then
      60. 1A4 = kb_textstring
      61. Endif
      62. If Key = 2 AND Bank = "A" And macro_no = 1 Then
      63. 2A1 = kb_textstring
      64. Endif
      65. If Key = 2 AND Bank = "A" And macro_no = 2 Then
      66. 2A2 = kb_textstring
      67. Endif
      68. If Key = 2 AND Bank = "A" And macro_no = 3 Then
      69. 2A3 = kb_textstring
      70. Endif
      71. If Key = 2 AND Bank = "A" And macro_no = 4 Then
      72. 2A4 = kb_textstring
      73. Endif
      74. If Key = 3 AND Bank = "A" And macro_no = 1 Then
      75. 3A1 = kb_textstring
      76. Endif
      77. If Key = 3 AND Bank = "A" And macro_no = 2 Then
      78. 3A2 = kb_textstring
      79. Endif
      80. If Key = 3 AND Bank = "A" And macro_no = 3 Then
      81. 3A3 = kb_textstring
      82. Endif
      83. If Key = 3 AND Bank = "A" And macro_no = 4 Then
      84. 3A4 = kb_textstring
      85. Endif
      86. If Key = 4 AND Bank = "A" And macro_no = 1 Then
      87. 4A1 = kb_textstring
      88. Endif
      89. If Key = 4 AND Bank = "A" And macro_no = 2 Then
      90. 4A2 = kb_textstring
      91. Endif
      92. If Key = 4 AND Bank = "A" And macro_no = 3 Then
      93. 4A3 = kb_textstring
      94. Endif
      95. If Key = 4 AND Bank = "A" And macro_no = 4 Then
      96. 4A4 = kb_textstring
      97. Endif
      98. If Key = 5 AND Bank = "A" And macro_no = 1 Then
      99. 5A1 = kb_textstring
      100. Endif
      101. If Key = 5 AND Bank = "A" And macro_no = 2 Then
      102. 5A2 = kb_textstring
      103. Endif
      104. If Key = 5 AND Bank = "A" And macro_no = 3 Then
      105. 5A3 = kb_textstring
      106. Endif
      107. If Key = 5 AND Bank = "A" And macro_no = 4 Then
      108. 5A4 = kb_textstring
      109. Endif
      110. If Key = 6 AND Bank = "A" And macro_no = 1 Then
      111. 6A1 = kb_textstring
      112. Endif
      113. If Key = 6 AND Bank = "A" And macro_no = 2 Then
      114. 6A2 = kb_textstring
      115. Endif
      116. If Key = 6 AND Bank = "A" And macro_no = 3 Then
      117. 6A3 = kb_textstring
      118. Endif
      119. If Key = 6 AND Bank = "A" And macro_no = 4 Then
      120. 6A4 = kb_textstring
      121. Endif
      122. If Key = 7 AND Bank = "A" And macro_no = 1 Then
      123. 7A1 = kb_textstring
      124. Endif
      125. If Key = 7 AND Bank = "A" And macro_no = 2 Then
      126. 7A2 = kb_textstring
      127. Endif
      128. If Key = 7 AND Bank = "A" And macro_no = 3 Then
      129. 7A3 = kb_textstring
      130. Endif
      131. If Key = 7 AND Bank = "A" And macro_no = 4 Then
      132. 7A4 = kb_textstring
      133. Endif
      134. If Key = 8 AND Bank = "A" And macro_no = 1 Then
      135. 8A1 = kb_textstring
      136. Endif
      137. If Key = 8 AND Bank = "A" And macro_no = 2 Then
      138. 8A2 = kb_textstring
      139. Endif
      140. If Key = 8 AND Bank = "A" And macro_no = 3 Then
      141. 8A3 = kb_textstring
      142. Endif
      143. If Key = 8 AND Bank = "A" And macro_no = 4 Then
      144. 8A4 = kb_textstring
      145. Endif
      146. If Key = 1 AND Bank = "B" And macro_no = 1 Then
      147. 1B1 = kb_textstring
      148. Endif
      149. If Key = 1 AND Bank = "B" And macro_no = 2 Then
      150. 1B2 = kb_textstring
      151. Endif
      152. If Key = 1 AND Bank = "B" And macro_no = 3 Then
      153. 1B3 = kb_textstring
      154. Endif
      155. If Key = 1 AND Bank = "B" And macro_no = 4 Then
      156. 1B4 = kb_textstring
      157. Endif
      158. If Key = 2 AND Bank = "B" And macro_no = 1 Then
      159. 2B1 = kb_textstring
      160. Endif
      161. If Key = 2 AND Bank = "B" And macro_no = 2 Then
      162. 2B2 = kb_textstring
      163. Endif
      164. If Key = 2 AND Bank = "B" And macro_no = 3 Then
      165. 2B3 = kb_textstring
      166. Endif
      167. If Key = 2 AND Bank = "B" And macro_no = 4 Then
      168. 2B4 = kb_textstring
      169. Endif
      170. If Key = 3 AND Bank = "B" And macro_no = 1 Then
      171. 3B1 = kb_textstring
      172. Endif
      173. If Key = 3 AND Bank = "B" And macro_no = 2 Then
      174. 3B2 = kb_textstring
      175. Endif
      176. If Key = 3 AND Bank = "B" And macro_no = 3 Then
      177. 3B3 = kb_textstring
      178. Endif
      179. If Key = 3 AND Bank = "B" And macro_no = 4 Then
      180. 3B4 = kb_textstring
      181. Endif
      182. If Key = 4 AND Bank = "B" And macro_no = 1 Then
      183. 4B1 = kb_textstring
      184. Endif
      185. If Key = 4 AND Bank = "B" And macro_no = 2 Then
      186. 4B2 = kb_textstring
      187. Endif
      188. If Key = 4 AND Bank = "B" And macro_no = 3 Then
      189. 4B3 = kb_textstring
      190. Endif
      191. If Key = 4 AND Bank = "B" And macro_no = 4 Then
      192. 4B4 = kb_textstring
      193. Endif
      194. If Key = 5 AND Bank = "B" And macro_no = 1 Then
      195. 5B1 = kb_textstring
      196. Endif
      197. If Key = 5 AND Bank = "B" And macro_no = 2 Then
      198. 5B2 = kb_textstring
      199. Endif
      200. If Key = 5 AND Bank = "B" And macro_no = 3 Then
      201. 5B3 = kb_textstring
      202. Endif
      203. If Key = 5 AND Bank = "B" And macro_no = 4 Then
      204. 5B4 = kb_textstring
      205. Endif
      206. If Key = 6 AND Bank = "B" And macro_no = 1 Then
      207. 6B1 = kb_textstring
      208. Endif
      209. If Key = 6 AND Bank = "B" And macro_no = 2 Then
      210. 6B2 = kb_textstring
      211. Endif
      212. If Key = 6 AND Bank = "B" And macro_no = 3 Then
      213. 6B3 = kb_textstring
      214. Endif
      215. If Key = 6 AND Bank = "B" And macro_no = 4 Then
      216. 6B4 = kb_textstring
      217. Endif
      218. If Key = 7 AND Bank = "B" And macro_no = 1 Then
      219. 7B1 = kb_textstring
      220. Endif
      221. If Key = 7 AND Bank = "B" And macro_no = 2 Then
      222. 7B2 = kb_textstring
      223. Endif
      224. If Key = 7 AND Bank = "B" And macro_no = 3 Then
      225. 7B3 = kb_textstring
      226. Endif
      227. If Key = 7 AND Bank = "B" And macro_no = 4 Then
      228. 7B4 = kb_textstring
      229. Endif
      230. If Key = 8 AND Bank = "B" And macro_no = 1 Then
      231. 8B1 = kb_textstring
      232. Endif
      233. If Key = 8 AND Bank = "B" And macro_no = 2 Then
      234. 8B2 = kb_textstring
      235. Endif
      236. If Key = 8 AND Bank = "B" And macro_no = 3 Then
      237. 8B3 = kb_textstring
      238. Endif
      239. If Key = 8 AND Bank = "B" And macro_no = 4 Then
      240. 8B4 = kb_textstring
      241. Endif
      242. End Sub
      Alles anzeigen

      Und genau für diese einfache Auswertung suche ich nach einer eleganteren Lösung.
    • Deine Variablen heißen dann etwas anders.
      Aus sowas
      If Key = 1 AND Bank = "A" And macro_no = 1 Then
      1A1 = kb_textstring
      Endif

      wird dann
      dim text(8,8,4) as string* Anzahl Buchstaben (weiß ich jetzt nicht)
      und die 'Bank' darf nur Werte von 1 bis 8 enthalten

      text(key,Bank,macro_no)=kb_textstring

      Jetzt musst du schauen, ob das in dein ram passt, das Problem hast du aber auch bei deiner Version.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • 8TO8 schrieb:

      das ganze Programm posten führt wohl eher nicht zum Ziel und wird unübersichtlich
      leider ein Trugschluss, dem viele Nicht-Kenner oft erliegen.
      Man denke nur an den Handwerker, der nach Meinung des nicht-Handwerkers ja höchstens eine halbe Stunde für den Wasserschaden braucht.

      In deinem Programmfragment sehe ich eine Config innerhalb einer Sub, hat das einen Grund? (Ich frage, weil ich den Rest des Programms nicht kenne)
      Ich schreibe End If nie zusammen.

      Prinzipiell lassen sich deine Abfragen auch zusammenfassen:

      BASCOM-Quellcode

      1. If Key = 1 And Bank = "A" And Macro_no = 1 Then
      2. 1a1 = Kb_textstring
      3. End If
      4. If Key = 1 AND Bank = "A" And macro_no = 2 Then
      5. 1A2 = kb_textstring
      6. End If
      7. If Key = 1 AND Bank = "A" And macro_no = 3 Then
      8. 1a3 = Kb_textstring
      9. End If
      10. If Key = 1 AND Bank = "A" And macro_no = 4 Then
      11. 1A4 = kb_textstring
      12. End If
      13. 'Wird zu
      14. If Key = 1 Then
      15. If Bank = "A" Then
      16. If Macro_no = 1 Then 1a1 = Kb_textstring
      17. If Macro_no = 2 Then 1a2 = Kb_textstring
      18. If Macro_no = 3 Then 1a3 = Kb_textstring
      19. If Macro_no = 4 Then 1a4 = Kb_textstring
      20. End If
      21. End If
      Alles anzeigen
    • @Michael: Danke für die Rückmeldung! Das Zusammenfassen gefällt mir gut, es wäre für mich übersichtlich lesbar und ich hätte nur noch 64 IF Blöcke. Schreibarbeit ist das nicht, ich kopiere die Blöcke und ändere die Zahlen mit Notepad++ (Markierte Elemente Suchen und Ersetzen ). Das mit dem Config im Sub mache ich da ich mit keydata = keydata unterschiedliche Data Tabellen aufrufe für die erlaubten Zeichen bei der Eingabe, z.B. Keydata= Keydata1 nur Zahlen möglich bei der Eingabe, Keydata= Keydata2 nur Upper Case Buchstaben etc. Am Anfang des Programs das Keybord Config und dann im Sub nur Keydata = Keydata1 schreiben um die Tabelle zu wechseln funktioniert leider nicht.

      @Tschoeatsch: Auch Dir Danke für die Rückmeldung! Ich wusste nicht, dass man bei der Dimensionierung des Strings in Klammer Felder angeben kann. Sieht so gut aus,
      nur erschließt sich mir dabei nicht wie ich danach wieder von der Variablen "text" zu meinen Variablen "1A1" etc. komme.
      Letztendlich muss ich ja den eingegebenen Text im EEprom speichern und deshalb wollte ich pro Text eine Variable haben:
      DIM EE_1A1 As Eram string * 16
      EE_1A1 = 1A1
    • Man kann die If-Abfragen auch in Select-Case zusammenfassen. Das wird aber am Ednde auch nicht übersichtlicher als mit If Then Else.

      Mit dem kompletten Programm wäre es schon besser nachvollziehbar was genau du machen willst.

      Mal noch am Rand: Es gibt in deinem Code-Fragment einige programmiertechnische Fehler.

      8TO8 schrieb:

      SUB Menu4:
      Entweder lässt du das Wort SUB weg und schreibst nur Menu4: oder du deklarierst dafür eine Sub

      BASCOM-Quellcode

      1. Declare Sub Menu4()
      2. Sub Menu4()
      3. End Sub
      4. 'Aufruf über
      5. Call Menu4
      6. ...oder
      7. Menu4:
      8. Return
      9. 'Aufruf über
      10. Gosub Menu4
      Alles anzeigen
      weiterhin hast du in der Sub stehen

      8TO8 schrieb:

      If Flag = 1 and kb_bytevalue = &H76 Then
      RETURN
      endif
      Wohin soll das RETURN gehen? EIn Return geht nur bei einem Aufruf über Gosub. Hier müsstest du ein Exit Sub schreiben.
      Und was @Michael schon geschrieben hat: Ein End If wird getrennt geschrieben.
      Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.
    • Endif wird bei mir automatisch zu end if :D ich schreib's meistens in einem Wort, das Leerzeichen lasse ich einfügen.

      zum Speichern im eeprom
      im eeprom auch arrays anlegen und dann mit einer verschachtelten 3er-Schleife die Variablen aus dem ram ins eeprom kopieren bzw andersrum.
      Was ich hier schreibe, müsste aus meiner Sicht gehen. Ich hab' aber noch probiert, im eeprom ein array von strings anzulegen, ob eindimensional oder 3-dimensional. Aber dann gibt es sicher Möglichkeiten, das anders zu machen und Fehlermeldungen des compilers zu vermeiden.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • @djmsc: Meine Suns sind deklariert, ich springe mit Call und ende mit End Sub, Return = Eingabefehler. Ich bin noch nicht soweit. Wollte zuerst die Texteingabe machen, danach wenn ich alle Variablen zusammen habe das Speichern im EEprom und danach erst den Programmablauf.

      @tschoeatsch: Warum darf man das End If nicht zusammenschreiben? Es funktioniert auch zusammengeschrieben :rolleyes:
      Du schreibst: im eeprom auch arrays anlegen und dann mit einer verschachtelten 3er-Schleife die Variablen aus dem ram ins eeprom kopieren.
      Hättest du mir ein Beispiel für so ein Array? .....Aber eigentlichkommen wir vom Thema ab..... :/
    • Dim text(8,8,4) as string*16
      dim ee_text(8,8,4) as eram string*16

      wenn das ohne compilermotzen geht, dann zum Schreiben der Daten vom ram in's eram
      for n=1 to 8
      for m=1 to 8
      for l =1 to 4
      ee_text(n,m,l)=text(n,m,l)
      next l
      next m
      next n
      in der anderen Richtung einfach die Zuordnung anpassen.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • @8TO8
      Eine andere Möglichkeit wäre, die Variablen "A" und "B" in jeweils einem Array abzulegen.
      Vielleicht so:
      (Var. K=Key)
      (Var. M=macro_no)
      (Var. Z=Zähler)

      IF Bank = "A" then
      Z=0
      For K=1 TO 8
      For M=1 to 4
      Z=Z+1
      If Key = K AND macro_no = M THEN
      A(Z) = kb_textstr
      END IF
      NEXT M
      NEXT K
      End IF

      Das gleiche dann mit "B".

      Dann würde die Variable "2A3" aber A23 heissen , also Bank "A", Key 2 , macro 3 (z.B.)
      Um den Variablenwert aus dem Array zu lesen, ist dann aber noch eine Berechnunh notwendig.
      Index von A = ((K-1)*4)+M (das entsprcht dem Zählwert Z ).

      Ob du das in dein Programm einbauen willst, oder zu viel zu verändern wäre, ich weiss es nicht.
      Ich wollte nur eine Möglichkeit aufzeigen, wie man die vielen if then umgehen kann.

      Detlef
      Leichtsinn ist kein Mut, Vorsicht keine Feigheit.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Dekaman ()

    • Hallo zusammen,

      leider hatte ich die ganze Wochr keine Zeit mich um mein Projekt zu kümmern, deshalb melde ich mich erst jetzt wieder....

      @Dekaman:
      Dein Lösungsvorschlag klingt recht praktikabel und so hatte ich mir das auch ungefähr vorgestellt, die Schleifen habe ich auch schon durchgetestet und es läuft so wie es sein soll. Womit ich nicht klar komme ist das zurück lesen der Variablen bzw. die Berechnung.
      Wenn ich die Formel wie angegeben verwende meckert der Compiler, zum einen über A= , da erwartet er ein Array ( Array expected [A]), zum andern wegen der Formel (3 parameters expected). Scheinbar erlaubt Bascom nicht zwei Berechnungen pro Programmzeile. Dann habe ich mit meinem laienhaften Verständnis für Mathematik versucht die Formel aufzudröseln, bin aber kläglich gescheitert, weil ich eben kein Bezug zum Array bekommen habe. Vielleicht kannst Du mir hier ja nochmal eine Hilfestellung geben, wie man ein Array zurück liest. Letztendlich, um bei deinem Beispiel zu bleiben, wollte ich ja eine Variable haben die "A23" heisst und den entsprechenden Textstring der Eingabe beinhaltet. Danke Vorab!

      @tschoeatsch:
      Auch bei der Sache mit der eeprom Dimensionierung motzt der Compiler: Out of SRAM space, Out of Eprom space.
      Scheinbar reichen die Ressourcen dafür nicht aus ( ATMEGA32).

      Viele Grüße,

      8TO8