Gut ich habe eure Hilfen mit eingebaut, doch leider gibt es immer noch Fehler, und Probleme, und zwar kommen keine Fehlermeldungen, aber es werden die Profile die geadded wurden nicht ausgegeben.
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
void Highscores::loadHighscores()
{
ofstream dataCreate ("Highscores.bin", ios::out | ios::binary);
if(dataCreate==NULL)
dataCreate << 0 << endl;
dataCreate.close();
char buffer[100];
ifstream data ("Highscores.bin", ios::in | ios::binary);
data.read(buffer,100);
int scoresSize = atoi(buffer);
int size;
for(int i = 0;i<scoresSize;i++)
{
Score s;
data.read(buffer,100);
size = atoi(buffer);
data.read(buffer,size);
s.name = buffer;
cout << s.name << endl;
data.read(buffer,100);
s.points = atoi(buffer);
data.read(buffer,100);
size = atoi(buffer);
data.read(buffer,size);
s.date = buffer;
scores.push_back(s);
}
data.close();
}
void Highscores::saveHighscores()
{
ofstream data ("Highscores.bin", ios::out | ios::binary);
int scoresSize = scores.size();
data.write(toCharArray(scoresSize).c_str(),100);
for(int i = 0;i<scoresSize;i++)
{
data.write(toCharArray(static_cast<int>(scores[i].name.size())).c_str(),100);
data.write(scores[i].name.c_str(),100);
data.write(toCharArray(scores[i].points).c_str(),100);
data.write(toCharArray(static_cast<int>(scores[i].date.size())).c_str(),100);
data.write(scores[i].date.c_str(),100);
}
data.close();
}
|
Frage 1:
Ich habe schon die Datei erstellt, und in ihr sind schon alle Daten, die wurde mit saveHighscores gespeichert.
Nun wenn ich sie auslese, seht ihr ja die cout anweisung, die eigentlich den Namen der Score ausgeben sollte, was aber leider nicht
passiert, wo mache ich denn den Fehler beim einlesen, ich speichere extra die länge der Strings.
Hinweis:
Die Methode toCharArray habe ich mir selbstgeschrieben, der kann man einen int oder long überweise, und die Methode liefert dann einen string zurück.
Frage 2:
Du hattest mir vorhin die Hilfe gegeben, SaRu, und zwar dass ich fail() benutzen soll, ich weiß jetzt aber nicht wie ich das in meinem Code umsetzten soll, etwa so?
(Ausschnitt aus dem Code)
|
C-/C++-Quelltext
|
1
2
3
4
|
ofstream dataCreate ("Highscores.bin", ios::out | ios::binary);
if(ios::fail())
dataCreate << 0 << endl;
dataCreate.close();
|
Danke für eure Antworten und Hilfen,
m.f.G. Developer_X