PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Gehen doppelte For-Schlaufen nicht?



Murus
02.12.2005, 08:57
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

PicNick
02.12.2005, 09:45
wo kommt das a her und was steht da drin ?
wenn sich a nicht ändert, steht ja alle übereinendeer
Empfehlung:


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

Murus
02.12.2005, 15:15
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

PicNick
02.12.2005, 15:20
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

Murus
02.12.2005, 15:55
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(8) schon belegt sind)

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

Herzlichen Gruss
Mario

PicNick
02.12.2005, 17:53
Starte mal den Simulator und schau insbesonders, was mit deinen Indizes A, B u. R passiert.

Murus
02.12.2005, 19:21
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

Marco78
02.12.2005, 23:22
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.

Murus
03.12.2005, 10:29
Das bin(a(i)) geht eben.. In einem anderen "Testprogrammm" frisst er das. Ich werde es aber zur Sicherheit nochmals testen.

Gruss
Mario