PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Fehlermeldung "Getclass error 72" bei SUB



Wombatz
21.10.2011, 20:42
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!!!

for_ro
21.10.2011, 22:40
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.

Wombatz
22.10.2011, 09:20
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?

for_ro
22.10.2011, 12:27
Nur leider ist es der Fehler nicht. Ich habe es mit Byte, Word, Integer, etc versucht... Immer das gleiche!
Wie sieht denn dein Code jetzt aus? Das hier kompiliert bei mir ohne Fehler

$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



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?
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.

Wombatz
22.10.2011, 18:09
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