ERROR NUR MIT 2.0.8.4.

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

    • ERROR NUR MIT 2.0.8.4.

      New

      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
    • New

      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.
    • New

      GeEmDeBeE wrote:

      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.

      The post was edited 1 time, last by Mitch64 ().