Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » Borland C++ Builder » Speichern von exe-Datei nach dem Schließen

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ] [ 3 ]
000
13.07.2008, 13:45 Uhr
Dominik_88



Hallo zusammen

Ich habe seit letzte Woche einige Spiele per C++ programmiert wie z.B. Kniffel.
Zu jedem Spiel habe ich auch Statistik erstellt wie Anzahl Runden, Gesamtpunktzahl,...
Wenn ich das Spiel, die ich programmiert habe, zum ersten mal öffne, dann steht bei Statistik überall 0. So nun spiele ich z.b. 2 Kniffelrunden und bei Anzahl Runden würden dann 2 Runden stehen, bei Gesamtpunktzahl z.B. bei 521 Punkte. So wenn ich exe-Datei wieder schließe und wieder öffne, steht im Statistik wieder 0.

Frage: Wie muss ich programmieren im C++, damit beim Schließen von exe-Datei gespeichert werden kann und nach dem aufrufen von exe-Datei weiterspielen kann?
So macht es auch mehr Spaß, weil man sehen kann, wieviele Runden man nach 3 Monate gespielt hat und wieviele Punkte man insgesamt hat.

Ich hoffe, ihr könnt verstehen was ich meine und ich würde mich sehr auf die Antwort freuen.

Viele liebe Grüße

Bis dann, Dominik
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
13.07.2008, 16:08 Uhr
öni



Du musst die Ergebnise in einer Textdatei oder ähnlichem speichern und dann bei jedem Start wieder auslesen.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
14.07.2008, 07:48 Uhr
~Dominik_88
Gast


Hi öni

Was muss ich im C++ eingeben, so dass in Textdatei oder ähnliches gespeichert werden kann.
Welches Befehl muss ich anwenden?
Und ich will auch, dass man die gespeicherte Daten nicht bearbeitet werden kann wie z.B. Man hat nach 2 Runden 521 Punkte und ich würde jetzt auf 5210 ändern und dann stimmt nicht mehr überein den Schnitt zu berechnen.

Viele liebe Grüße

Dominik
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
14.07.2008, 12:31 Uhr
WiredCoder




Zitat:
ich will auch, dass man die gespeicherten Daten nicht bearbeiten kann

Dann benenne das Dateiformat nach dem Spiel, zum Beispiel "score.xyz", wenn der Gamer dann was verändern möchte, lässt er es lieber weil er dann gleich am Dateiformat sieht das er es wahrscheinlich nicht einlesen kann.

Zitat:
Was muss ich im C++ eingeben, so dass in Textdatei oder ähnliches gespeichert werden kann. Welches Befehl muss ich anwenden?

Ich hab da mal ein Tutorial auf meiner Website geschrieben, kannst es dir ja anschauen wenn du möchtest. Es erklärt, wie man eine .txt-File einliest:
www.online-programmierung.com/tut_5.html
--
Ich würde mich sehr über einen Besuch auf meiner Website freuen: www.Online-Programmierung.com

Dieser Post wurde am 14.07.2008 um 12:33 Uhr von WiredCoder editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
14.07.2008, 14:07 Uhr
Dominik_88



Hi WiredCoder

Danke für die Informationen. Aber ich kann damit nichts anfangen, weil zu viele Befehle sind. Ich habe gerade ein einfaches Programm mit wenig Text erstellt und Form1 würde so aussehen:



Und der Text sieht so aus:

//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int i=0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
i=i+1;
Label1 -> Caption = "Sie haben "+IntToStr(i)+" mal gedrückt.";
}
//---------------------------------------------------------------------------


Dieses Text zeigt, dass die Zahl i immer um 1 erhöht wird, wenn ich auf dem Button klicke.
Nach dem Schließen beginnt wieder von 0. Die Frage lautet ja, wie man nach dem Schließen speichern kann z.B. i=5 und nach dem erneuten öffnen z.B. nach einem Neustart wieder i=5 gezeigt werden soll.
Ihr könnt mein Text kopieren und so bearbeiten, dass man in Textdatei oder ähnliches speichern kann ohne dass man von 0 beginnt.
Ich weiß auch nicht, wo ich "fstream f;", "ofstream",... in diesem Text einfügen muss.
Sorry, dass ich noch nicht so viele Befehle kenne, weil ich erst seit 3-4 Wochen die Konsolen bei C++ programmieren kann. Und vor einem halben Jahr die Konsolen Experte.

Viele liebe Grüße und ich würde mich sehr freuen, wenn einer diesen Text so ändert, dass man speichern bzw. öffnen kann, nachdem man die exe-Datei geschlossen bzw. geöffnet hat.

Bis dann, Dominik
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
14.07.2008, 14:08 Uhr
Dominik_88



http://img257.imageshack.us/img257/3150/formsx9.jpg

Das ist der Link zu Form1.

Viele liebe Grüße

Dominik
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
14.07.2008, 14:13 Uhr
Kest
saint


WiredCoder, gib diesen Link bitte nie wieder an, wenn es darum geht, jemandem etwas beibringen zu wollen. Alle Erklärungen sind zu ~99% falsch.
--
Wenn man einen Hufschlag hört, sollte man >Pferd< denken und nicht >Zebra<.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
14.07.2008, 21:16 Uhr
Dominik_88



Hallo zusammen

Ich habe gerade gelesen über fstream und so, aber es wird wieder 0 angezeigt, nachdem ich neu geöffnet habe. Was habe ich vergessen? Ich habe mein vorheriger Text (siehe Antwort 004) die ganzen Befehle wie fstream, f.open("test.dat"...) eingegeben, aber es funktioniert noch nicht. Ich zeige euch mein aktueller Text:


//---------------------------------------------------------------------------

#include <vcl.h>
#include <fstream>
using namespace std;

#pragma hdrstop

#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
int i=0;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)
{
i=i+1;
fstream f;
f.open("test.dat", ios::in, ios::out);
Label1 -> Caption = "Sie haben "+IntToStr(i)+" mal gedrückt.";
f << i << endl;
f.close();
}
//---------------------------------------------------------------------------


Viele liebe Grüße und ich würde mich sehr über die Antwort freuen.

Bis dann, Dominik
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
14.07.2008, 22:06 Uhr
öni



Naja jetzt hast du den Wert reingeschrieben. Das kannste ja auch überprüfen indem du mal reinschaust per Editor was da so in der Datei "test.dat" drinne steht. (Falls dein Code soweit stimmt.)

Nun musst du eben noch auslesen was in der Datei drinne steht wenn du das Programm startest. Die Reihenfolge wäre dann:

Einlesen
Anzeigen
Abspeichern
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
14.07.2008, 23:26 Uhr
Dominik_88



Hi öni

1.) Wenn ich bei f.open() in der Klammer nur ""test.dat" ios::out" eingebe, dann sehe ich auch ein test-Datei in diesem Ordner. Ich habe mal in "test.txt" umbenannt und durchgeführt, damit ich schauen kann, ob die Variable in diesem Datei gespeichert ist. Wenn ich z.B. 7mal auf dem Button klicke, dann ist i auch 7 und wenn ich das Programm schließe, dann zeigt sich im Textdatei auch 7. Wenn ich aber ""test.dat", ios::in, ios::out" in der Klammer eingebe (also mit "ios::in"), dann kommt kein Textdatei bzw. bearbeitet. Warum ist das so?

2.) Wenn ich im C++ auf dem grünen Dreieckspfeil klicke und ich drücke den Button z.B. 7mal, dann steht im Textdatei ebenfalls 7. Nun tue ich diese exe-Datei doppelklicken und drücke 2mal auf dem Button und im Textdatei steht immer noch 7 und warum nicht 2?

3.) An welcher Stelle und was muss ich für "Einlesen", "Anzeigen" und "Abspeichern" einfügen, so dass der Programm mit angegebenen i vom Textdatei startet? Ich habe f.open("test.dat" ios::out) mal bei "__fastcall TForm1::TForm1" oder nach "int i=0" eingefügt aber es kommt eine Fehlermeldung.

Viele liebe Grüße

Bis dann, Dominik
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ] [ 3 ]     [ Borland C++ Builder ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: