Bascom Datentypen

Gast #3034684
Lesenswert?

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
Gast #3034760
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren