-         

Ergebnis 1 bis 4 von 4

Thema: Wo ist der Fehler? Sub Declare

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    28.12.2004
    Beiträge
    77

    Wo ist der Fehler? Sub Declare

    Anzeige

    Wieso kriege ich denn Fehler?

    BYVAL should be used in declaration [[112]]


    Code:
    Declare Sub Leftdir(ddir As Bit)
    Declare Sub Rightdir(ddir As Bit)
    
       If Command = 17 Then
        Call Leftdir(1)
       End If
    
       If Command = 16 Then
        Call Rightdir(1)
       End If
    
    
    
    Sub Leftdir(ddir As Bit)
    
      If Ddir = 0 Then
       Portb.0 = 1
       Portb.1 = 0
       Portb.2 = 0
       Portb.3 = 0
      Else
       Portb.0 = 0
       Portb.1 = 1
       Portb.2 = 0
       Portb.3 = 0
      End If
    
    End Sub
    
    
    Sub Rightdir(ddir As Bit)
    
      If Ddir = 0 Then
       Portb.0 = 0
       Portb.1 = 0
       Portb.2 = 0
       Portb.3 = 1
      Else
       Portb.0 = 0
       Portb.1 = 0
       Portb.2 = 1
       Portb.3 = 0
      End If
    
    End Sub

  2. #2
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2004
    Ort
    Hard, Vorarlberg
    Beiträge
    155
    Der Datentyp Bit kann nicht als Parameter übergeben werden. Siehe dazu den Hilfetext bei DECLARE SUB
    Die Fehlermeldung dazu ist in diesem Fall nicht hilfreich und tritt erst auf, wenn man die Funktion benützen will.
    Viele Grüße
    Josef
    -------------------------------------------------------------------------------------
    DOS-File System für BASCOM-AVR auf http://members.aon.at/voegel

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    28.12.2004
    Beiträge
    77
    ja danke!! Und wieso geht das nicht?

  4. #4
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    09.11.2004
    Ort
    Hard, Vorarlberg
    Beiträge
    155
    Das hängt mit der Art zusammen, wie Parameter an SUB/FUNCIONs übergeben werden.
    Auf den Softstack wird die RAM-Adresse des 1.Bytes des Parameters gelegt. Sofern die Variable BYREF übergeben wird, ist dies die Orginaladresse, bei BYVAL wird zuerst die Variable auf den Frame kopiert und dann die Adresse der Kopie im Frame auf den Softstack gelegt.
    Bei Bit müsste noch die Bit-Position (0-7) im Byte irgendwo übergeben werden, dies ist aber nicht vorgesehen.
    Je nach Anwendung müsste es aber möglich sein, das Problem zu umgehen. Z.B. vor dem Aufruf das Bit in ein Byte kopieren und in der Funktion den umgekehrten Vorgang.
    Viele Grüße
    Josef
    -------------------------------------------------------------------------------------
    DOS-File System für BASCOM-AVR auf http://members.aon.at/voegel

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •