save/load-Problem
Übersicht

![]() |
C64-FloBetreff: save/load-Problem |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hallo!
Ich programmiere nur so ein bisserl nebenebei und möchte gerade einen Adventskalender für meine Liebste schreiben... damit siche dieser auch "merkt" welche Türchen schon geöffnet wurden, brauche ich eine gaaanz einfache save/load-routine (die sich im Grunde nur eine einzige Variable merkt) Nachdem ich in Robs tutorial eigentlich die richtigen Befehle gefunden habe Code: [AUSKLAPPEN] stream = ReadFile("save.txt") tage=readbyte(stream) closefile stream und Code: [AUSKLAPPEN] stream = WriteFile("save.txt") writeshort stream,tage closefile stream fördert mir das Programm aber seltsame Werte beim laden zutage - "50" anstatt "2" bzw "51" anstatt 3 usw.... woran liegt das? ![]() |
||
"Die Situation ist aussichtslos - aber nicht kritisch!"
(S.Effenberg.) |
![]() |
RallimenSieger des 30-EUR-Wettbewerbs |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ganz einfach, du speicherst die Variable als Short(2 Byte) und liest aber nur 1 Byte aus!
Code: [AUSKLAPPEN] stream = ReadFile("save.txt")
tage=readbyte(stream) closefile stream ;.... ;... stream = WriteFile("save.txt") writebyte stream,tage closefile stream |
||
[BB2D | BB3D | BB+]
|
![]() |
C64-Flo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ach >hust< ...mein fehler, das war noch von gestern Abend - hab da ein bisschen rumprobiert -
also mit Code: [AUSKLAPPEN] stream = ReadFile("save.txt") tage=readbyte(stream) closefile stream und Code: [AUSKLAPPEN] stream = WriteFile("save.txt") writebyte stream,tage closefile stream end habe ich dasselbe Problem - konkret gesagt: In der textdatei ist die Zahl "2" gespreichert, in BB hat die geladenen Variable "tage" den Wert "50" ![]() ...hmm hat das vlt mit ASCII code zu tun? |
||
"Die Situation ist aussichtslos - aber nicht kritisch!"
(S.Effenberg.) |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das hast Du schlau erkannt, die ASCIIs sind schuld.
Wenn es ganz einfach sein soll, speicher Deine offenen Tage per writeline und lese sie mit int(readline()) aus. Wär zwar normalerweise Platzverschwendung aber für eine Zahl kann man das durchaus tolerieren ![]() Ansonsten kämst du natürlich mit ql:CHR() an die passenden Zahlwerte. |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
5k41 |
![]() Antworten mit Zitat ![]() |
---|---|---|
poste doch mal den gesamten code, oder guck selbst ob du die Variable viellicht irgendwo änderst ![]() MfG |
||
Projekte:
For a better World - Gesellschaftsspiel ( 100%) User posted image |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ach ja, Du könntest auch einfach in deinem Programm mittels ql:currentdate$ überprüfen welches Datum ist und anhand dessen die Türchen aufmachen, dann musst Du auch nix speichern.
Wär auch sinniger, sonst könnte deine Freundin einfach das Programm 24 mal starten... |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
C64-Flo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Klasse!
Mit Chr() hab ichs gut hinbekommen ohne viel verändern zu müssen, und CurrentDate$ ist ja natürlich genial - kann ich mit dem so ermittelten Datum mit gewöhnlichen Operatoren jonglieren? so was wie Code: [AUSKLAPPEN] if currentdate$< 24 dec 2006 then irgendwas ![]() |
||
"Die Situation ist aussichtslos - aber nicht kritisch!"
(S.Effenberg.) |
![]() |
BladeRunnerModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Du musst den string den dir die Funktion zurückgibt zerlegen um damit zu arbeiten, was allerdings nicht schwer ist, da das Format ja festgelegt ist: DDMMMYYYY
Du kannst mittels ql:mid und ql:int alle infos rausholen die Du brauchst. (Prüfe ob "Dec" und "2006" drin sind und dann verzweige anhand des Tages.) (wobei ich auch alle "kleineren" Daten freischalten würde, damit sie sich vergangene nochmal angucken kann). |
||
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3 Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64 B3D BMax MaxGUI Stolzer Gewinner des BAC#48, #52 & #92 |
![]() |
C64-Flo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Super!
Danke für die schnelle Hilfe, jetzt klappt alles soweit ^^ ![]() |
||
"Die Situation ist aussichtslos - aber nicht kritisch!"
(S.Effenberg.) |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group