Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Anonymous

unregistriert

11

25.05.2006, 09:14

Such mal im Forum nach CreateFile ;)

Streams sind einfach lam.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

12

25.05.2006, 09:48

Zitat von »"Ghostrider"«

C-/C++-Quelltext

1
2
3
    Spielerpunkte.Punkte = g_pFlash->m_iScore;
    ofstream file("Data\\Points.txt",ios::out | ios::app);
    file.write((char*)&Spielerpunkte.Punkte , sizeof(sSave));

Du speicherst lediglich das Element Punkte, gibst aber als Größe die Größe der gesamten Struktur an.

rklaffehn

Treue Seele

Beiträge: 267

Wohnort: Braunschweig

  • Private Nachricht senden

13

25.05.2006, 10:26

Hmm,

so wie ich das sehe, ist das ohnehin der falsche Ansatz, um einfach eine Zahl in eine Datei zu schreiben. Mit der kleinen Zeile

C-/C++-Quelltext

1
file << Spielerpunkte.Punkte << endl;
schreibst du die Zahl in die Datei und umgekehrt (wenn sie zum lesen geöffnet wurde) liest

C-/C++-Quelltext

1
file >> Spielerpunkte.Punkte
das ganze wieder ein. Auf diese Weise hast du dann auch eine Textdatei, die man sich in einem Texteditor wieder anschauen kannst.

Wenn es denn schon binär gespeichert werden soll (was nicht ohne ist, weil man da ein paar Sachen bedenken muss, die nicht offensichtlich sind) scheint mir der Ansatz auch unvollständig. In diesem Fall, solltest du nicht nur ein Element deiner sSave Struktur speichern, sondern alles davon, also

C-/C++-Quelltext

1
file.write (reinterpret_cast<const char*> (&Spielerpunkte), sizeof (sSave))
zum Speichern der kompletten Struktur. Laden des ganzen ist dann wieder einfach durch

C-/C++-Quelltext

1
file.read (reinterpret_cast<char*> (&Spielerpunkte), sizeof (sSave))
erledigt. Das ist dann eine Binärdatei, die man in einem normalen Texeditor vermutlich nicht mehr anschauen kann, ohne sich zu wundern.

Wenn du wirklich nur die Punkte speichern willst, hat David völlig recht; dann müsste es wohl eher

C-/C++-Quelltext

1
sizeof (Spielerpunkte.Punkte)
heissen.

Gruss,
Rainer

Hier steht was über C++ iostreams: http://www.cplusplus.com/ref/

Edit: Beim Lesen darf es natürlich nicht "const char*" sein...

BlackSnake

Community-Fossil

  • »BlackSnake« ist der Autor dieses Themas

Beiträge: 1 549

Beruf: Student

  • Private Nachricht senden

14

25.05.2006, 11:45

hm..

probier ich mal aus beide versionen,
die mir besser erscheint nehme ich^^

thx

Werbeanzeige