-
-
Neuer Benutzer
Öfters hier
Bug in Bascom?
Hallo Bascom Gemeinde,
ich hab da was komisches was ich nict verstehe, bzw ich glaube ich versteh das schon aber Bascom nicht. Also:
Ich hab ein Byte-Array Namens Alle() da schreibe ich Strings rein z.B.:
Alle(2) = " "
Alle(3) = Left(toaddr , 1)
wenn ich das dann wieder auslese passiert das was ich auch will : es stehen die entsprechenden ASCII Werte drin. Aber jetzt kommts:
Alle(4) = Mid(toaddr , 2 , 1)
Das klappt nicht und der Compiler meldet : Error 213 String expected for
assignment[ALLE(4)].......
Wieso String expected??? ALLE() ist doch als Byte-Array gedimmt!!!
und mit LEFT gehts aber mit MID nicht!!!
Wenn ich aber nun sage OK du bekommst was du willst also nen Byte und ich compiliere das:
Alle(4) = Asc(mid(toaddr , 2 , 1))
bekomme ich : Error 31 Invalid datatype.....
Nur.... so klappts:
B = Mid(toaddr , 2 , 1)
Alle(4) = Asc(b)
Kann mir das wer erklären????
Gruß
Matthes
-
Administrator
Robotik Visionär
Wenn du mit String Befehlen arbeitest solltest du auch Strings definieren und keine Byte-Arrays! So einfach läßt sich das nicht immer vermischen.
Nebenbei: Deine grüne Farbe ist schrecklich lesbar
-
Erfahrener Benutzer
Robotik Einstein
Die Frabe ist ja schrecklich zu lesen :P
Mid liefert als Ergebnis ein String. Wenn Alle() Byte ist, passt das nicht.
Aber die Lösung hast du ja gefunden.
=asc(mid(....)) geht mit Bascom nicht. Jeder Schritt benötigt eine Zeile.
A = 5 * B + 1 geht z.B. auch nicht.
A = 5 * B : A = A + 1 würde gehen. Der : leitet einen neuen Befehl ein.
Ist leider etwas aufwendiger, aber nicht zu ändern. In Assembler wäre es ja auch nicht möglich gewesen
EDIT: Tja, da hab ich ne Minute zu langsam geschrieben
-
Neuer Benutzer
Öfters hier
Hi Frank,
das ist ja richtig, ABER warum geht denn das:
Alle(4) = Asc(mid(toaddr , 2 , 1))
nicht?
-
Neuer Benutzer
Öfters hier
OK das erklärt es!
Danke!
-
Neuer Benutzer
Öfters hier
OK das erklärt es!
Danke!
-
Neuer Benutzer
Öfters hier
Was ich aber noch nicht verstehe ist, warum ich LEFT(n,y) dem Bytearray zuweisen kann MID(str,x,y) aber nicht.
Gruß
Matthes
-
Erfahrener Benutzer
Robotik Einstein
Die Frage ist gut! Laut der Hilfe, sollte es auch ein String sein.
Evtl ist das der Bug
-
Erfahrener Benutzer
Robotik Einstein
du solltest einmal die hilfe lesen. du musst es als string definieren.
es ist kein bug in bascom. du zauberst nur was hinein, was nicht hinein gehört. wenn du fussball spielst, kannst du keine tischtennisregeln verwenden.
mfg pebisoft
-
Neuer Benutzer
Öfters hier
@pebisoft
Nenne es wie Du willst, aber es ist zumindest offensichtlich, dass Bascom das Ergebniss von LEFT(String,x) als Byte wenn nicht interpretiert, so zumindest die Verwendung des Ergebnisses als Byte zulässt.
Matthias
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen