Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » konfigurationen speichern und laden

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 <
000
03.10.2004, 00:07 Uhr
Lensflare



Hallo Leute.

ich bin bei der vollendung meines aufwendigsten minigames und stehe nun vor einem problem:

wie kann ich einstellungen, die im optionenmenü vorgenommen wurden speichern und beim nächsten programmstart wieder automatisch laden?
es sollte auch der highscore nicht verloren gehen

Ich will nur numerische werte vom typ int speichern, das erleichtert vielleicht diese angelegenheit.

klingt irgendwie ganz einfach und vielleicht ist es das auch, aber ich weiss überhaupt nicht wie ich das angehen soll. Ich weiss nur wie man mit fprintf() zeichen in eine datei schreibt und mit fscanf() liest.

Danke im Voraus,
Lensflare
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.10.2004, 01:26 Uhr
Pablo
Supertux
(Operator)


Du hast selber die Antwort dir gegeben. Was ist genau deine Frage?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
03.10.2004, 01:45 Uhr
Lensflare



nehmen wir mal an, ich will einen haufen werte speichern.
soll ich dann einfach die zahlen getrennt mit /n (neue zeile) in die datei schreiben?

und wenn ich dann einen bestimmten wert (einstellung) ändern will, wie finde ich die zahl, die ich überschreiben muss?

soll ich die werte irgendwie nummerieren um zu wissen welcher wert wo hin gehört?

mir gehts einfach darum, dass ich weiss, welcher wert in welche variable gehört...

wahrscheinlich werd ich mir auf die stirn klopfen und mir sagen "na klar!", wenn ich die lösung kenne, aber ich komme einfach nicht drauf

bei einigen spielen hab ich eine datei gefungen, die die einstellungen beinhaltet und das sah ca. so aus:

player_name = Lensflare
music_volume = 200
play_intro = no

wie soll man das einlesen? Wenn zeichenkette "player_name = " gefunden, dann folgender wert ist "Lensflare"?
Dient es als markierung, wo der wert gespeichert ist?
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)

Dieser Post wurde am 03.10.2004 um 01:47 Uhr von Lensflare editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
03.10.2004, 18:46 Uhr
~q24xs
Gast


Das sieht mir nach einer INI Datei aus, normalerweiße kann man die mit

Code:
DWORD GetPrivateProfileString(
  LPCTSTR lpAppName,        // points to section name
  LPCTSTR lpKeyName,        // points to key name
  LPCTSTR lpDefault,        // points to default string
  LPTSTR lpReturnedString,  // points to destination buffer
  DWORD nSize,              // size of destination buffer
  LPCTSTR lpFileName        // points to initialization filename
);


und mit

Code:
BOOL WritePrivateProfileString(
  LPCTSTR lpAppName,  // pointer to section name
  LPCTSTR lpKeyName,  // pointer to key name
  LPCTSTR lpString,   // pointer to string to add
  LPCTSTR lpFileName  // pointer to initialization filename
);


auslesen. Für genauere Infos schau mal in der MSDN nach. Ich klaub aber nicht das das ganze ANSI Standard ist, geht meiner Meinung nach nur mit Window$.

MFG q24xs
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
03.10.2004, 19:36 Uhr
Oliver
S2-Pixelgeneral


Oder du machst ein Binärdatei das ist am einfachsten, so etwa (ungetestet):


C++:
#include <iostream>
#inlcude <cstdio>
using namespace std;

int main()
{
FILE*file;
int var1=32,var2=25,var3,var4;

file=fopen("datei.bin","wb");
// Schreiben
fwrite(&var1,sizeof(int),1,file);
fwrite(&var2,sizeof(int),1,file);
fclose(file);

// nun wird die datei eingelesen und in var3 und var4 wird der Wert von var1 und var2
// stehen
file=fopen("datei.bin","rb");
// Lesen
fread(&var3,sizeof(int),1,file);
fread(&var4,sizeof(int),1,file);
fclose(file);

// Werte ausgeben
cout << "var1 wurde eingelesen als: " << var3 << '\n';
cout << "var2 wurde eingelesen als: " << var4 << '\n';

cin.get();
return 0;

}


--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )

Dieser Post wurde am 03.10.2004 um 19:36 Uhr von Oliver editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
03.10.2004, 20:12 Uhr
Lensflare



Da ich dachte, dass keine antworten mehr kommen hab ich mich umgeschaut und hab was in der "allegro lib" (game developing libary) gefunden. Ist voll praktisch.
wenn ich zB eine config-datei hab mit dem inhalt:


Code:
name = Lensflare
score = 500





C++:
get_config_file("filename.cfg");

int score = get_config_int(NULL, "score", 0);  //integer lesen
set_config_int(NULL, "score", 400); //integer schreiben

char name[] = get_config_string(NULL, "name", 0);  //string lesen
//usw...




also bin dankbar für eure posts, aber dieses "allegro" zeugs ist einfach zu praktisch!

hier der link: allegro
--
Wenn das Gehirn so einfach wäre, dass wir es verstehen könnten, wären wir so einfach, dass wir es nicht verstehen könnten.
(Emerson Pugh Trost)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
03.10.2004, 20:16 Uhr
Pablo
Supertux
(Operator)


Es gibt meherer Varianten, es hängt nur davon ab, wie du die Werte speichern willst.

Am häufigsten ist es sowas zu machen


Code:
variable1 = wert1
variable2 = wert2
variable3 = wert3
...



Das Parsen von diesen ist viel einfacher, weil du da sowasmachen kannst:


C++:
/* das ist C Code */
FILE* f = fopen("...", "r");
char line[100];
char variablename[100];
char wert[100];

if(!f)
{
    fprintf(stderr, "Fehler beim Lesen\n");
    return ???; /* ja nach Funktion */
}
while(NULL!=fgets(line,100,f))
{
    if(2==sscanf(line, "%s = %s", variable,wert))
    {
    /* hier mit strcmp überprüfen welche Variable gelesen wurde */
    }
}




Eine andere Möglichkeit wäre, wenn du di Einstellungen in einem struct speicherst oder so, das ganze struct in einer bin. Datei zu speichern, wie Oliver
vorgeschlagen hat. Wie gesagt, es hängt davon ab, wie deine Daten aussehen und wie du sie gernen speichern willst, ob du willst, dass die Anwender die
Daten von Hand ändern können und und und....
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


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: