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.
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
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
ja danke!! Und wieso geht das nicht?
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
Lesezeichen