-
        

Ergebnis 1 bis 9 von 9

Thema: Gehen doppelte For-Schlaufen nicht?

  1. #1
    Murus
    Gast

    Gehen doppelte For-Schlaufen nicht?

    Anzeige

    Hallo zusammen.
    Folgendes Programm spinnt bei mir:

    For B=1 to 2
    M=bin(X(b))

    For I=1 To 8
    R=mid(m, I, 1)
    O=val(r)
    Locate 1,a
    Lcd O
    next I
    Incr a

    Next b

    End

    Ich habe unter (X(i)) zwei Variablen gespeichert. X(1)=1 und X(2)=3
    So sollte ich in der ersten LCD-Zeile eine 00000001 und in der zweiten eine 00000011 sehen... ich sehe aber in der ersten Zeile nur eine 10....

    was ist das falsch?

    Herzlichen Gruss
    Mario

  2. #2
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    wo kommt das a her und was steht da drin ?
    wenn sich a nicht ändert, steht ja alle übereinendeer
    Empfehlung:
    Code:
    For B=1 to 2
       M =  bin(X(b))
       Locate 1,a 
       For I=1 To 8
              R=mid(m, I, 1)
              O=val(r)
              Lcd O 
        next I
        Incr a
    Next B
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  3. #3
    Murus
    Gast
    Ja, das meinte ich.
    Das mit dem LCD hat sich erledigt, hab den Fehler gefunden. Muss heissen Locate a, 1
    So krieg ich in der ersten Zeile den binären Inhalt von X(1) und in der zweiten den binären Wert von X(2)

    Doch:
    In der ersten Zeile stimmt der Binärwert.
    In der zweiten Zeile erscheint IMMER, egal welchen Wert ich zuordne, 00110000

    Häää? Was ist da schief?

    Herzlichen Gruss
    Mario

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Ich hab das getestet (außer der LCD-Ausgabe, sowas hab ich nich), das funzt.
    es kann nur ein fehler sein mit "locate" u. "LCD", da muß ich leider passen
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  5. #5
    Murus
    Gast
    Also, jetzt mal der direkte Versuch:
    Hier kommt noch ein struberes Resultat.
    Ich habe in einem Array(q(i)) normale Dezimalzahlen gespeichert (kleiner 255). Diese möchte ich in Binärcode umwandeln und danach jedes Bit in ein anderes Array schreiben.

    Hier mal der Code:

    For I=1 To L (L ist die Anzahl der belegten Plätze im Array q(i))
    M=bin(q(i))

    For R=1 To 8
    O=mid(m, R, 1)
    U=Val(o)
    B=A+8
    B=B+R
    X(b)=U
    Next R
    A=A+8

    Next I

    Die erste For Schleife wählt mir die Zahl aus und verwandelt sie in Binärcode. Dann, in der zweiten Schlaufe wird die Binärzahl in ihre Bits zerlegt und jedes Bit einzeln gespeichert (B und A dienen dazu, erst ab X(9) zu speichern, da X(1)-X( schon belegt sind)

    Nur: Da werden nur Nullen gespeichert.....

    Herzlichen Gruss
    Mario

  6. #6
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    Starte mal den Simulator und schau insbesonders, was mit deinen Indizes A, B u. R passiert.
    mfg robert
    Wer glaubt zu wissen, muß wissen, er glaubt.

  7. #7
    Murus
    Gast
    Ich hab jetzt den Code mal ausgedruckt und spiele morgen im Bett mal den Simulator. Dann guck ich auch noch im richtigen Sim nach. Und wenn ich nix finde, frag ich nochmals...
    PS: wo find ich im Sim meine Variablen? Ich find da nur Register und son Zeugs...


    Herzlichen Gruss
    Mario

  8. #8
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    06.11.2004
    Beiträge
    1.693
    Ich könnte mir vorstellen, das Bascom Bin(a(i)) nicht mag.
    Probier es doch mal aus, was passiert, wenn der aktuelle Wert a(i) erst in eine andere Variable geschrieben wird und dann umgewandelt wird.

  9. #9
    Murus
    Gast
    Das bin(a(i)) geht eben.. In einem anderen "Testprogrammm" frisst er das. Ich werde es aber zur Sicherheit nochmals testen.

    Gruss
    Mario

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •