ERROR NUR MIT 2.0.8.4.

    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!

    • ERROR NUR MIT 2.0.8.4.

      Wie kann es sein, dass eine Codezeile bei Version 2.0.7.8. fehlerfrei und mit 2.0.8.4. einen "Fehler" bemerkt ? Der Code selbst läuft mit 2078 einwandfrei.

      Das Programm:

      Dim Bn As Byte
      Dim Bitmap As Word

      Bn = 5
      Bitmap = 0
      Set Bitmap.bn
      Set Bitmap.bn + 8

      ...wird von 2.0.7.8. einwandfrei kompiliert:

      'Report : BITMAP_TEST
      'Date : 01-15-2022
      'Time : 11:08:15
      '
      'Compiler : BASCOM-AVR LIBRARY V 2.0.7.8
      'Processor : 90S2313
      'SRAM : 80 hex
      'EEPROM : 80 hex
      'ROMSIZE : 800 hex

      ...und 2.0.8.4. erzeugt dann:


      Error : 127 Line : 10 Invalid parameter [BITMAP.BN + 8] , in File : C:\SEAFILE_PROJEKTE\MIDI-RATSCHE\BITMAP_TEST.bas

      Hat jemand eine Antwort ?
      Danke im Voraus
      Georg
    • Nein, das ist nicht korrekt. Der Simulator zeigt ganz deutlich, dass zuerst das bit 5 und dann das bit 13 gesetzt wird - wie erwartet. Ein Displacement mit einer konstanten klappt ja in anderen Konstrukten auch. Deshalb glaube ich, dass der 2084 einen Rückschritt gemacht hat.
    • GeEmDeBeE schrieb:

      Wie kann es sein, dass
      Wenn du in der Bascom-Hilfe nachschaust, wirst du feststellen,
      dass die Befehle Set, Reset und Toggle zur Manipulation eines Bits in einem Byte oder Port vorgesehen sind.

      bn ist dabei die Bitnummer, die zu manipulieren ist.

      Der Syntax ist;
      Set/Reset/Toggle Variable.Bit
      und nicht
      Set/Reset/Toggle Variable.Bit +|-|*|/ irgendwas.

      Ich sehe das wie @Franz
      Der Compiler wird sucsessive (von Version zu Version) verbessert und es ist richtig, dass bei falschem Syntax ein Fehler auszugeben ist.

      Wenn du sowas machen willst, dann verwende für die Bit-Nr eine Variable und addiere das Displacement vorher drauf auf die BitNr und wende dann den Befehl
      Set/Reset/Toggle an.

      Wie soll der Compiler mit deiner Anweisung umgehen?


      Dim Bn As Byte
      Dim Bitmap As Word

      Bn = 5
      Bitmap = 0

      Set Bitmap.bn + 8

      1. Compiler konnte Variable Bitmap nehmen und das Bit 5 setzen und dann 8 drauf addieren.
      2. Compiler könnte bn+8 rechnen und dann das als Bit-Nummer zum Setzen des Bilts nehmen.

      Das ist aber nicht deterministisch (eindeutig).

      Um dies eindeutig zu machen misstest du schreiben:

      Set Bitmap.(bn+8)

      Und da sind wir wieder beim Syntax.

      Ich bin der Meinung, dass der Compiler genau das richtige tut und den Programmierer auf den Fehler hinweist.

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