-         

Ergebnis 1 bis 10 von 10

Thema: Bug in Bascom?

  1. #1
    Neuer Benutzer Öfters hier
    Registriert seit
    14.02.2005
    Ort
    Düsseldorf
    Beiträge
    18

    Bug in Bascom?

    Anzeige

    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

  2. #2
    Administrator Robotik Einstein Avatar von Frank
    Registriert seit
    30.10.2003
    Beiträge
    4.989
    Blog-Einträge
    1
    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

  3. #3
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    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

  4. #4
    Neuer Benutzer Öfters hier
    Registriert seit
    14.02.2005
    Ort
    Düsseldorf
    Beiträge
    18
    Hi Frank,

    das ist ja richtig, ABER warum geht denn das:

    Alle(4) = Asc(mid(toaddr , 2 , 1))

    nicht?

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    14.02.2005
    Ort
    Düsseldorf
    Beiträge
    18
    OK das erklärt es!

    Danke!

  6. #6
    Neuer Benutzer Öfters hier
    Registriert seit
    14.02.2005
    Ort
    Düsseldorf
    Beiträge
    18
    OK das erklärt es!

    Danke!

  7. #7
    Neuer Benutzer Öfters hier
    Registriert seit
    14.02.2005
    Ort
    Düsseldorf
    Beiträge
    18
    Was ich aber noch nicht verstehe ist, warum ich LEFT(n,y) dem Bytearray zuweisen kann MID(str,x,y) aber nicht.

    Gruß

    Matthes

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Die Frage ist gut! Laut der Hilfe, sollte es auch ein String sein.

    Evtl ist das der Bug

  9. #9
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    20.06.2004
    Beiträge
    1.941
    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

  10. #10
    Neuer Benutzer Öfters hier
    Registriert seit
    14.02.2005
    Ort
    Düsseldorf
    Beiträge
    18
    @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
  •