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

1

03.12.2008, 18:18

[ERLEDIGT] Probleme mit dem Speichern

Howdihow,

Ich habe ein Problem: Meine Variablen wollen sich nicht speichern, obwohl alle Speicherfunktionen richtig da stehen! Er sagt mir irgendwas mit "Mehrfachdefinition", doch wenn ich das ifstream/ofstream vom Input/Output weglasse, bekomme ich noch immer Fehler raus!
Hier mal die Fehler:

Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
1>------ Neues Erstellen gestartet: Projekt: Zahlenraten, Konfiguration: Debug Win32 ------
1>Die Zwischen- und Ausgabedateien für das Projekt "Zahlenraten" mit der Konfiguration "Debug|Win32" werden gelöscht.
1>Kompilieren...
1>Zahlenraten.cpp
1>c:\users\luca\documents\visual studio 2008\projects\zahlenraten\zahlenraten\zahlenraten.cpp(110) : error C2374: 'Input': Neudefinition; Mehrfachinitialisierung
1>        c:\users\luca\documents\visual studio 2008\projects\zahlenraten\zahlenraten\zahlenraten.cpp(106): Siehe Deklaration von 'Input'
1>c:\users\luca\documents\visual studio 2008\projects\zahlenraten\zahlenraten\zahlenraten.cpp(114) : error C2374: 'Input': Neudefinition; Mehrfachinitialisierung
1>        c:\users\luca\documents\visual studio 2008\projects\zahlenraten\zahlenraten\zahlenraten.cpp(106): Siehe Deklaration von 'Input'
1>c:\users\luca\documents\visual studio 2008\projects\zahlenraten\zahlenraten\zahlenraten.cpp(118) : error C2374: 'Input': Neudefinition; Mehrfachinitialisierung
1>        c:\users\luca\documents\visual studio 2008\projects\zahlenraten\zahlenraten\zahlenraten.cpp(106): Siehe Deklaration von 'Input'
1>c:\users\luca\documents\visual studio 2008\projects\zahlenraten\zahlenraten\zahlenraten.cpp(251) : error C2374: 'Output': Neudefinition; Mehrfachinitialisierung
1>        c:\users\luca\documents\visual studio 2008\projects\zahlenraten\zahlenraten\zahlenraten.cpp(247): Siehe Deklaration von 'Output'
1>c:\users\luca\documents\visual studio 2008\projects\zahlenraten\zahlenraten\zahlenraten.cpp(255) : error C2374: 'Output': Neudefinition; Mehrfachinitialisierung
1>        c:\users\luca\documents\visual studio 2008\projects\zahlenraten\zahlenraten\zahlenraten.cpp(247): Siehe Deklaration von 'Output'
1>Das Buildprotokoll wurde unter "file://c:\Users\Luca\Documents\Visual Studio 2008\Projects\Zahlenraten\Zahlenraten\Debug\BuildLog.htm" gespeichert.
1>Zahlenraten - 5 Fehler, 0 Warnung(en)
========== Alles neu erstellen: 0 erfolgreich, Fehler bei 1, 0 übersprungen ==========



Hier von den Statistiken:

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
57
58
59
60
61
62
63
64
65
66
67
        // Statistik

        else if (Auswahl == 2)
        {
            // Info-Meldung

            cout << "[FUER ZURUECK: 1 + ENTER]" << endl;

            for (int t=3; t>0; t--)
            {
                Zeit (1000);
            }

            system ("cls");

            // while-Schleife

            while (Auswahl != 1)
            {
                ifstream Input ("Spielername.spn", ios::binary);
                Input.read ((char*) &Spielername, sizeof (Spielername));
                Input.close ();

                ifstream Input ("Punkte.pkt", ios::binary);
                Input.read ((char*) &Punkte, sizeof (Punkte));
                Input.close ();

                ifstream Input ("Lebensenergie.lbe", ios::binary);
                Input.read ((char*) &Lebensenergie, sizeof (Lebensenergie));
                Input.close ();

                ifstream Input ("Zufallszahl.zfz", ios::binary);
                Input.read ((char*) &Zufallszahl, sizeof (Zufallszahl));
                Input.close ();

                cout << "~~~~~~~~~~~~~~~~~~~~~~~~" << endl;
                cout << "Spielername            : " << Spielername << endl;
                cout << "Punkte                 : " << Punkte << endl;
                cout << "Vorherige Lebensenergie: " << Lebensenergie << endl;
                cout << "Vorherige Zufallszahl  : " << Zufallszahl << endl;
                cout << "~~~~~~~~~~~~~~~~~~~~~~~~" << endl;
                cin >> Auswahl;
                system ("cls");

                if (!cin.good ())
                {
                    cin.clear ();
                    cin.ignore ();
                }

                // Zurück

                if (Auswahl == 1)
                {
                    system ("cls");
                }

                // Ansonsten

                else
                {
                    cout << "ERROR: Zurueck = 1 + ENTER" << endl;

                    for (int t=3; t>0; t--)
                    {
                        Zeit (1000);
                    }

                    system ("cls");
                }
            } // while-Schleife

        } // Statistik


Und von der Funktion "Zahlenraten":

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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
int Zahlenraten (string Spielername, int Auswahl, int &Punkte, int Bereich, int Lebensenergie, int Zufallszahl)
{
    // do-while-Schleife

    do
    {
        cout << "Du raetst von 1 bis ";
        cin >> Bereich;
        system ("cls");

        if (!cin.good ())
        {
            cin.clear ();
            cin.ignore ();
        }

        if (Bereich < 15)
        {
            cout << "ERROR: Zahl muss groesser als 15 sein!" << endl;

            for (int t=4; t>0; t--)
            {
                Zeit (1000);
            }

            system ("cls");
        }
    } while (Bereich < 15);

    // Zufallszahl & Lebensenergie initialisieren

    Zufallszahl = (rand ()%Bereich)+1;
    Lebensenergie = Bereich*2;

    // while-Schleife

    while (Auswahl != Zufallszahl)
    {
        cout << "Lebensenergie: " << Lebensenergie << endl;
        cout << "~~~~~~~~~~~~~~~~~~~~" << endl;
        cout << "Deine Zahl: ";
        cin >> Auswahl;
        system ("cls");

        if (!cin.good ())
        {
            cin.clear ();
            cin.ignore ();
        }

        // Zahl ist zu klein

        if (Auswahl < Zufallszahl)
        {
            cout << "Zahl zu klein!" << endl;
            Lebensenergie -= 10;
            cout << "~~~~~~~~~~~~~~~~~~~~" << endl;
        }

        // Zahl zu groß

        else if (Auswahl > Zufallszahl)
        {
            cout << "Zahl zu gross!" << endl;
            Lebensenergie -= 10;
            cout << "~~~~~~~~~~~~~~~~~~~~" << endl;
        }

        // Gewonnen

        else if (Auswahl == Zufallszahl)
        {
            ofstream Output ("Punkte.pkt", ios::binary);
            Output.write ((char*) &Punkte, sizeof (Punkte));
            Output.close ();

            ofstream Output ("Lebensenergie.lbe", ios::binary);
            Output.write ((char*) &Lebensenergie, sizeof (Lebensenergie));
            Output.close ();

            ofstream Output ("Zufallszahl.zfz", ios::binary);
            Output.write ((char*) &Zufallszahl, sizeof (Zufallszahl));
            Output.close ();

            cout << "GEWONNEN!" << endl;
            cout << "ZAHL WAR " << Zufallszahl << "!" << endl;
            Punkte = Lebensenergie;
            cout << "Punkte: " << Punkte << endl;

            for (int t=4; t>0; t--)
            {
                Zeit (1000);
            }

            system ("cls");
        }

    } // while-Schleife


    return 2;
}



Wenn jemand an dem ganzen Code interessiert ist hier der Link:
> Der ganze Code <

2

03.12.2008, 18:21

Lies die Fehlermeldung. Er sagt dir doch, was du falsch machst. Du definierst Input mehrmals

Anonymous

unregistriert

3

03.12.2008, 18:25

Zitat von »"Steef"«

Lies die Fehlermeldung. Er sagt dir doch, was du falsch machst. Du definierst Input mehrmals


Ja, aber wie oben bereits erwähnt habe ich den Test gemacht, wenn ich ifstream weglass', kommt wieder ein Fehler.

EDIT: Ach Input meinst Du? Wieso denn das? Wie soll ich es denn sonst nennen?

4

03.12.2008, 18:31

Input1
Input2
Input3

oder

InputPoints
InpuLife
InputRandom

oder einfach was ganze anderes

da gelten die gleichen regeln wie bei normalen vars

Anonymous

unregistriert

5

03.12.2008, 18:35

Danke funktioniert jetzt.
Thread ist erledigt

DasBlub

Alter Hase

Beiträge: 802

Wohnort: Schweiz

Beruf: Programmierer

  • Private Nachricht senden

6

03.12.2008, 18:36

C-/C++-Quelltext

1
ifstream Input ("Spielername.spn", ios::binary); 


du definierst Input jedes mal neu als ifstream... du solltest echt mal die fehlermeldungen lesen.. auch wenn ich hier nicht so oft poste... ich sehe immer wieder posts von dir wo du sachen fragst, die du anhand der fehlermeldungen selber lösen könntest.

7

05.12.2008, 14:28

Spiri, kauf dir mal endlich ein gutes Buch zur Programmierung in C++ und lies es gründlich. Wie man Variablen deklariert, sollte etwa als allererstes behandelt werden. Wenn dir die ganze Zeit die Grundlagen fehlen, kommst du nämlich nie weiter.

Und wie gesagt solltest du lernen, Fehlermeldungen zu lesen. Ein wichtiger Bestandteil beim Programmieren beinhaltet auch das Beheben von Fehlern (nicht nur Debugging zur Laufzeit). Dieses Forum kann dich zwar dabei unterstützen, aber mindestens selber könntest du es schon versuchen, gerade bei solchen Fehlermeldungen, die wohl mehr als eindeutig sind... :roll:

Werbeanzeige