Hallo, ich fürchte, ich habe ein Problem mit Datentypen in Bascom. Und zwar fehlt mir der Durchblick, wann ein Byte als Binärwert, und wann es als ASCII-Wert behandelt wird. Ich möchte einer Variablen, die als "word" dimensioniert wurde, Teile eines empfangenen Strings zuweisen. Dabei bekomme ich die Fehlermeldung "Value larger than string length". Die relevanten Programmausschnitte sind: --------------------- Dim Proznr2 As Word Dim S As String * 5 ... Proznr2 = Left(s , 1) 'Diese Zeile wird als "Value larger than string length" bemängelt. --------------------- Das verstehe ich nicht. Warum kann ich nicht mit "Left" aus einer Variablen eine oder zwei Stellen rausnehmen und einer "Word"-Variablen zuweisen ? Gruß Tilmann Hier nochmal der ganze Code, falls nötig: ____________________________________________________ $regfile = "m644Pdef.dat" $crystal = 1000000 $baud = 300 Dim Proznr As Word Proznr = 1 'Prozessornummer dieses Prozessors Dim Proznr2 As Word 'Prozessornummer die empfangen wird Dim S As String * 5 'String mit 5 (+1) Byte Länge On Urxc Onrxd 'Bei Empfang Interrupt aufrufen! Enable Urxc 'URXC ist ein Interrupt Enable Interrupts 'Interrupts insgesamt einschalten Main: If Len(s) > 4 Then 'Wenn 5 Zeichen eingegangen sind ... Print "empfangen wurde: " ' Print S 'schicke sie kontrollhalber zurück Proznr2 = Left(s , 1) 'Kontrolliere auf Übereinstimmung S = "" End If Goto Main 'Interrupt:----------------------------------- Onrxd: S = S + Chr(udr) 'neu empfangenes Byte anhängen Return
In ein Word kannst Du nur einen numerischen Wert "einfügen". Versuche mal mit "VAL" aus dem String-Zeichen einen numerischen Wert zu machen: Proznr2=Val(Left s,1)) gez. Leistungsspochtler
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.