Tastaturabfrage aus Array verrechnet sich... Kategorie: Programmierung (von Pet - 6.07.2007 17:10) | ||
| ||
Hallo alle zusammen, ich teste gerade meine 1x12 Tastatur. Ich gebe 6 Einzelziffern ein, die dann in eine Zahl zwischen 0 und 999999 adaptiert werden soll. Klappt alles wunderbar, die 6 Ziffern werden in einem Byte-Array korrekt gespeichert, aber sobald ich die Variable v durch Multiplikation und Addition der Array-Elemente berechne, verrechnet sich meine CC2, sobald ich an der 2. Stelle (also Array-Element i[1]) eine Zahl grö�er 3 (???) eingebe. Also wenn ich z.B. 999999 eingebe, kommt 934463 als Ergebnis, bei 939999 stimmt es. Gebe ich z.B. 040000 ein, kommt als Ergebnis -25536... bei 949999 sind es 884463. Irgendwie stehe ich mit einem Brett vor dem Kopf auf einem gro�en Schlauch! Mich macht es stutzig, dass das nur bei der 2. Stelle passiert. v ist ja long und sollte doch eingentlich mit 999999 kein Problem haben? Ich habe meinen Code angehängt, evtl. fällt jemandem etwas auf... Vielen Dank im Voraus. Gru� Pet thread main { run 80; lcdext.init(); rbkeyb.init(0,0); lcdext.clear(); //--------------------------------- //Lokale Variablen //--------------------------------- long v; byte in,pos,i[6],keycode; string u; //--------------------------------- //Wertzuweisungen //--------------------------------- v = 0; in = 0; pos = 0; i[0] = 0; i[1] = 1; i[2] = 0; i[3] = 0; i[4] = 0; i[5] = 0; //--------------------------------------- //6-stellige Zahl eingeben, default 10000 //--------------------------------------- lcdext.goto(2,0); lcdext.print("010000"); lcdext.goto(2,0); while rbkeyb.get() != 0x23 { lcdext.goto(2,pos); lcdext.setcursor(3); in = rbkeyb.get(); if in == 0x2A { lcdext.goto(2,pos); pos = pos - 1; //Cursor eins nach links lcdext.goto(2,pos); if pos > 5 pos = 0; // Cursorposition auf 0 bis 5 begrenzen if pos < 0 pos = 0; } else { if in { if in==0x31 {keycode=1;} if in==0x32 {keycode=2;} if in==0x33 {keycode=3;} if in==0x34 {keycode=4;} if in==0x35 {keycode=5;} if in==0x36 {keycode=6;} if in==0x37 {keycode=7;} if in==0x38 {keycode=8;} if in==0x39 {keycode=9;} if in==0x30 {keycode=0;} i[pos] = keycode; lcdext.put(in); pos = pos + 1; if pos > 5 pos = 5; if pos < 0 pos = 0; } } sleep 100; } v = i[0]*100000 + i[1]*10000 + i[2]*1000 + i[3]*100 + i[4]*10 + i[5]; sleep 500; lcdext.clear(); lcdext.setcursor(0); //---------------------------------- //Ausgabe auf externem LCD //---------------------------------- loop { u = ""; str.putlong(u,v); lcdext.goto(1,0); lcdext.print(u); } } | ||
Antwort schreiben Antworten: Re: Tastaturabfrage aus Array verrechnet sich... (von Schroeder - 7.07.2007 13:08) Re: Tastaturabfrage aus Array verrechnet sich... (von Pet - 9.07.2007 13:36) Re: Tastaturabfrage aus Array verrechnet sich... (von Pet - 7.07.2007 10:37) |