Hallo wombatz,
in der Declarte Sub Hilfe steht dies:
Bits are global and can not be passed with functions or subs.
Du wirst also ein Byte übergeben müssen.
Außerdem gibst du in dem Call nur den Parameter an, nicht byval oder den Typ.
Hallo zusammen,
ich bräuchte noch einmal eure Hilfe.
Ich versuche eine Sub einzubinden und dort eine Varible in die Hauptschleife zu übergeben.
Mein eigendliches Programm habe ich nun auf diesen Rest zusammengeschrumpft um die Übersicht zu behalten.
Hier tritt der selbe Fehler auf, den ich nicht verstehe:
"Error: 72: Getclass error [0]"
$regfile = "M8def.dat"
$crystal = 3686400
Dim A As Integer
Dim B As Integer
Dim C As Bit
Declare Sub Print_word(byval C As Bit)
Ddrc = &B00111111
Do
Mache irgendwas
Call Print_word(byval C As Bit)
Loop
Sub Print_word(byval C As Bit)
Mach etwas anderes
und gib C an die Hauptschleife
End Sub
Was ist falsch???
Danke für die Hilfe!!!
Hallo wombatz,
in der Declarte Sub Hilfe steht dies:
Bits are global and can not be passed with functions or subs.
Du wirst also ein Byte übergeben müssen.
Außerdem gibst du in dem Call nur den Parameter an, nicht byval oder den Typ.
Das ist ein guter Hinweis, daran hatte ich nicht gedacht.
Nur leider ist es der Fehler nicht. Ich habe es mit Byte, Word, Integer, etc versucht... Immer das gleiche!
Vor allem verstehe ich nicht wie ich eine Variable von der Sub an die Do:Loop Schleife schicken kann???
Geht das überhaupt mit Sub oder brauche ich da die function?
Geändert von Wombatz (22.10.2011 um 10:22 Uhr)
Wie sieht denn dein Code jetzt aus? Das hier kompiliert bei mir ohne Fehler
Code:$regfile = "M8def.dat" $crystal = 3686400 Dim A As Integer Dim B As Integer Dim D As Byte Declare Sub Print_word(byval C As Byte) Ddrc = &B00111111 Do 'Mache irgendwas Call Print_word(d) Loop Sub Print_word(byval C As Byte) 'Mach etwas anderes 'und gib C an die Hauptschleife !!!! das hier wird so nicht gehen !!!!!!!! End Sub
Wenn du sauber programmieren und einen Wert zurückgeben willst, dann ist tatsächlich eine Funktion das Mittel der Wahl.
Du kannst dann genau einen Wert zurückgeben von dem Typ, wie die Funktion selber definiert ist.
Natürlich kannst du in der Sub oder Funktion auch alle globalen Variablen ändern. Dies ist aber im strengen Sinn nicht gewollt.
Wenn das bei dir kompiliert wird, frage ich mich, ob es vielleicht an meiner Version liegen kann. Habe mir gerade Bascom gekauft und installiert. Vielleicht sind noch Demofragmente enthalten. Kann das der Fehler sein???
Danke für deine Hilfe
Lesezeichen