![]() ![]() INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Unser Tipp: Die Schreib- und Leseroutine zueinander komplementär gestalten. Erklärung: Die programmierte Funktion der Ausleseroutine (ab Zeile 28 bis Zeile 32) setzt voraus dass die ersten 3 Elemente der Datendatei die Werte für "Rekord", "rekord2", "rekord3" enthalten. Jedoch werden nur durch "#newrek" diese 3 Werte in der benötigten Reihenfolge in die Datendatei geschrieben. Die resultierenden Inhalte der Speicherelemente der Datendatei kann man sich danach wie folgt vorstellen: [Element1] [Element2] [Element3] [Element4] ..... [Element n] Inhalt: Inhalt: Inhalt: Inhalt: Inhalt: [Rekord] [rekord2] [rekord3] [unbekannt] .... [unbekannt] Die Unterroutine "#zweiter" hingegen schreibt nur 2 Werte in die Datendatei. An dieser Stelle arbeiten Schreib- und Leseroutine nicht mehr komplementär - dies führt zur fehlerhaften Interpretation der Daten durch die Leseroutine: [rekord2] [rekord3] [nicht verändert] Die Unterroutine "#dritter" schreibt nur 1 Wert in die Datendatei: [rekord2] [nicht verändert] [nicht verändert] Lösungsansatz: Versuch doch mal "#zweiter" und "#dritter" entsprechend abzuändern. Tipp: Mittels Zählschleife könnte man z.B. "#pauserek" kompakter gestalten: DEFINE zaehler WORD FOR zaehler = 1 TO 24 schlag = ADEingang IF schlag > 10 THEN GOTO geschlagen PAUSE 6 NEXT PS Hast du einen Link zu deinem Projekt? > Hallo > > erstmal danke für die schnelle Antwort. > Ich habe es nun mit open for write und open for read gemacht. > Problem ist nur das er wenn das programm länger läuft die rekorde auf einmal vertauscht bzw. sogar löscht. > Hier ist mein Programm . . . Fällt ein fehler ins Auge ? > Danke vielmals > > > > define Light port[16] > define musik port[1] > define Trommelwirbel port[2] > > define ADEingang as AD[2] > define Rekord as word[1] > define schlag as word[2] > define i as word[3] > define schlag2 as word[4] > define gemma as word[5] > define spannung as word[6] > define balken as word[7] > define e as word[8] > define rekord2 as word[9] > define rekord3 as word[10] > > > > > import "SHOW_BAR.blib" > > #INIT > INITBAR() > Light=off > musik=on > Trommelwirbel = off > > open for read > input# Rekord > input# rekord2 > input# rekord3 > close > > do > #pausenrek3 'Standard Display mit der Aufforderung zum Schlag und einer anzeige > LCD.INIT 'des momentanen Rekords > LCD.CLEAR > Light=off > LCD.Pos 1,2 > LCD.Print "Hau den Lukas" > LCD.Pos 2,2 > LCD.Print "Bitte Schlagen" > pause 50 > goto pausehdl > > #pausenhdl > LCD.CLR > LCD.Pos 1,2 > LCD.Print "1. Platz" > LCD.Pos 2,4 > LCD.Print Rekord > LCD.Print "Pkte." > goto pauserek > > #pausenrek > LCD.CLR > LCD.Pos 1,2 > LCD.Print "2. Platz" > LCD.Pos 2,4 > LCD.Print rekord2 > LCD.Print "Pkte." > goto pauserek2 > > #pausenrek2 > LCD.CLR > LCD.Pos 1,2 > LCD.Print "3. Platz" > LCD.Pos 2,4 > LCD.Print rekord3 > LCD.Print "Pkte." > goto pauserek3 > loop 'dieser Standard Display wird angezeigt bis sich am Eingang etwas ändert > 'diese Änderung muss jedoch größer als der Wert 10 sein > > #geschlagen > musik=off > Trommelwirbel = on > gemma = schlag*4 > Schlag2=(gemma/3)*2 > spannung = gemma - 15 > i = 0 > e = 0 > LCD.CLR > DO > LCD.CLR > i=i+1 > e=i/4 > balken = e*80/255 > SHOW_BAR(balken) 'rauf zählen bis zum halben erreichten Wert(schnell) > LCD.POS 2,7 > LCD.PRINT i > Loop until i=schlag2 > LCD.CLR > DO > LCD.CLR > i=i+1 > e=i/4 > balken = e*80/255 > SHOW_BAR(balken) 'rauf zählen bis zum erreichten Wert (langsamer) > LCD.POS 2,7 > LCD.PRINT i > pause 2 > Loop until i=spannung > > LCD.CLR > > do > LCD.CLR > i=i+1 > e=i/4 > balken = e*80/255 > SHOW_BAR(balken) > LCD.Pos 2,7 > LCD.Print i > pause 15 > loop until i=gemma > > LCD.CLR > e=i/4 > balken = e*80/255 > SHOW_BAR(balken) > LCD.Pos 2,7 > LCD.Print gemma > Light = on > pause 10 > Light = off > pause 10 > Light = on > pause 10 > Light = off > pause 10 > Light = on > pause 10 > Light = off > pause 50 > LCD.CLR > > if gemma < rekord3 then goto tobad > if gemma < rekord2 then goto dritter 'zuordnen ob der erreichte Wert höher als der momentane Rekord ist > if gemma < Rekord then goto zweiter > if gemma > Rekord then goto newrek > > #newrek ' Neuer Bestwert erreicht > rekord3 = rekord2 > rekord2 = Rekord > Rekord = gemma > > open for write > print# Rekord > print# rekord2 > print# rekord3 > close > > > LCD.POS 1, 2 > LCD.print Rekord > LCD.Print " Punkte" > LCD.POS 2, 2 > LCD.Print "reichen fuer" > pause 150 > LCD.CLR > LCD.Pos 1,2 > LCD.Print "Den neuen" > LCD.Pos 2,4 > LCD.Print "Rekord!" > pause 150 > LCD.CLR > LCD.POS 1, 2 > LCD.Print "Herrzlichen" > LCD.Pos 2, 3 > LCD.Print "Glueckwunsch" > pause 200 > goto INIT > > #tobad > LCD.CLR ' Unter Bestwert > LCD.Pos 1,2 > LCD.Print "Leider keine" > LCD.Pos 2,5 > LCD.Print "Platzierung" > pause 200 > goto INIT > > #zweiter > > rekord3 = rekord2 'neuer 2.Platz > rekord2 = gemma > > open for write > print# rekord2 > print# rekord3 > close > > LCD.Pos 1,2 > LCD.Print rekord2 > LCD.Print " Punkte" > LCD.Pos 2,2 > LCD.Print "reichen fuer" > pause 150 > LCD.CLR > LCD.Pos 1,2 > LCD.Print "Den neuen" > LCD.Pos 2,4 > LCD.Print "2.Platz!" > pause 150 > LCD.CLR > LCD.POS 1, 2 > LCD.Print "Herrzlichen" > LCD.Pos 2, 3 > LCD.Print "Glueckwunsch" > pause 200 > goto INIT > > #dritter > > rekord3 = gemma > > open for write > print# rekord3 > close > > LCD.Pos 1,2 > LCD.Print rekord3 > LCD.Print " Punkte" > LCD.Pos 2,2 > LCD.Print "reichen fuer" > pause 150 > LCD.CLR > LCD.Pos 1,2 > LCD.Print "Den neuen" > LCD.Pos 2,4 > LCD.Print "3.Platz!" > pause 150 > LCD.CLR > LCD.POS 1, 2 > LCD.Print "Herrzlichen" > LCD.Pos 2, 3 > LCD.Print "Glueckwunsch" > pause 200 > goto INIT > > > > > #pausehdl > schlag = ADEingang 'abfragen ob geschlagen wurde und wenn ja sofort zur anzeige des > if schlag > 10 then goto geschlagen 'Schlages wechseln > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > goto pausenhdl > > > #pauserek > schlag = ADEingang 'abfragen ob geschlagen wurde und wenn ja sofort zur anzeige des > if schlag > 10 then goto geschlagen 'Schlages wechseln > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > goto pausenrek > > > #pauserek2 > schlag = ADEingang 'abfragen ob geschlagen wurde und wenn ja sofort zur anzeige des > if schlag > 10 then goto geschlagen 'Schlages wechseln > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > goto pausenrek2 > > #pauserek3 > schlag = ADEingang 'abfragen ob geschlagen wurde und wenn ja sofort zur anzeige des > if schlag > 10 then goto geschlagen 'Schlages wechseln > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > schlag = ADEingang > if schlag > 10 then goto geschlagen > pause 6 > goto pausenrek3 |
Antwort schreiben |