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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.