JLI Spieleprogrammierung Foren-Übersicht JLI Spieleprogrammierung

 
 FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen 
 medals.php?sid=6627793d648586fae629d74c7cc2bc16Medaillen   RegistrierenRegistrieren   ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin 

eigene config-datei in c++

 
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
mfc++
JLI'ler


Alter: 40
Anmeldedatum: 18.02.2004
Beiträge: 163
Wohnort: Bettlä
Medaillen: Keine

BeitragVerfasst am: 20.03.2004, 11:05    Titel: eigene config-datei in c++ Antworten mit Zitat

hi leuz. ich möchte gerne wissen wie ich ne *.config mache in der mein programm nach einstellungen sucht und einstellungen reinschreibt.
z.b.

[Serialnumber]
Ja // Serial vorhanden

[Comp2]
Favoriten = 0 // Favoritenordner nicht vorhanden
Benutzer_Abmelden = 1 // Benutzer abmelden vorhanden

.
.
.

u.s.w.

wie mach ich denn das mein programm nun so stellen raussucht und die werte vergleicht und auch werte löschen und reinschreiben kann?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
KI
JLI Master


Alter: 39
Anmeldedatum: 04.07.2003
Beiträge: 965
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 20.03.2004, 11:32    Titel: Antworten mit Zitat

Das ist das Format von INI Dateien.

[TEST]
Wert1 = 1
Wert2 = Test
Wert3 = usw.

[Test2]
Test = Test // Kommentar

In diesem Thread hab' ich das schonmal erwähnt. Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
mfc++
JLI'ler


Alter: 40
Anmeldedatum: 18.02.2004
Beiträge: 163
Wohnort: Bettlä
Medaillen: Keine

BeitragVerfasst am: 20.03.2004, 16:11    Titel: Antworten mit Zitat

ja dann ist es halt ne ini datei. mir egal. hauptsache das programm liest die werte raus und kann was damit anfangen. oder es schreibt selber welche rein
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Sec
Junior JLI'ler



Anmeldedatum: 18.09.2002
Beiträge: 88

Medaillen: Keine

BeitragVerfasst am: 20.03.2004, 16:23    Titel: Antworten mit Zitat

Moin

du kannst ja meine Klasse nahmen wenn du willst:wink:

CConfig.h
Code:

/********************************************************************************************/
/* CConfig                                                                                  */
/********************************************************************************************/
#ifndef _CCONFIG_H_
#define _CCONFIG_H_

/* Include **********************************************************************************/

#include <windows.h>
#include <stdio.h>

/********************************************************************************************/

/* Define ***********************************************************************************/

#define CCONFIG_WINDOW_TITEL "GameEngine"

/********************************************************************************************/

/* Class ************************************************************************************/

class CConfig
{
private:

   FILE * m_ConfigFile;
   char m_FilePath[31];

   LPSTR m_WindowTitel;
   float m_Version;
   int m_VertexProcessing;
   int m_ScreenWidth;
   int m_ScreenHeight;
   int m_ColorDepth;
   int m_EnableAutoDepthStencil;
   int m_AutoDepthStencilFormat;
   int m_Fullscreen;

public:

   CConfig(void);
   ~CConfig(void);

   int Create(char *FilePath);
   void Load(void);

   LPSTR GetWindowTitel(void);
   float GetVersion(void);
   int GetVertexProcessing(void);
   int GetScreenWidth(void);
   int GetScreenHeight(void);
   int GetColorDepth(void);
   int GetEnableAutoDepthStencil(void);
   int GetAutoDepthStencilFormat(void);
   int GetFullscreen(void);
};

/********************************************************************************************/

/********************************************************************************************/
#endif


CConfig.cpp
Code:

/********************************************************************************************/
/* CConfig.cpp                                                                              */
/********************************************************************************************/

/* Include **********************************************************************************/

#include "CConfig.h"

/********************************************************************************************/

/********************************************************************************************/
CConfig::CConfig(void)
{
   m_ConfigFile = NULL;

   m_WindowTitel = CCONFIG_WINDOW_TITEL;
   m_Version = 0.0f;
   m_VertexProcessing = 0;
   m_ScreenWidth = 0;
   m_ScreenHeight = 0;
   m_ColorDepth = 0;
   m_EnableAutoDepthStencil = 0;
   m_AutoDepthStencilFormat = 0;
   m_Fullscreen = 0;
}
/********************************************************************************************/

/********************************************************************************************/
CConfig::~CConfig(void)
{
   //
}
/********************************************************************************************/

/********************************************************************************************/
int CConfig::Create(CError &Error, CLog &Log, char *FilePath)
{
   strcpy(m_FilePath, FilePath);

   m_ConfigFile = fopen(m_FilePath, "r");

   if(m_ConfigFile == NULL)
   {
      return -1;
   }

   fscanf(m_ConfigFile, "Version                    : %f\n", &m_Version);
   fscanf(m_ConfigFile, "VertexProcessing           : %d\n", &m_VertexProcessing);
   fscanf(m_ConfigFile, "ScreenWidth                : %d\n", &m_ScreenWidth);
   fscanf(m_ConfigFile, "ScreenHeight               : %d\n", &m_ScreenHeight);
   fscanf(m_ConfigFile, "ColorDepth                 : %d\n", &m_ColorDepth);
   fscanf(m_ConfigFile, "EnableAutoDepthStencil     : %d\n", &m_EnableAutoDepthStencil);
   fscanf(m_ConfigFile, "AutoDepthStencilFormat     : %d\n", &m_AutoDepthStencilFormat);
   fscanf(m_ConfigFile, "Fullscreen                 : %d\n", &m_Fullscreen);

   fclose(m_ConfigFile);

   return 0;
}
/********************************************************************************************/

/********************************************************************************************/
void CConfig::Load(void)
{
   m_ConfigFile = fopen(m_FilePath, "r");

   fscanf(m_ConfigFile, "Version                    : %f\n", &m_Version);
   fscanf(m_ConfigFile, "VertexProcessing           : %d\n", &m_VertexProcessing);
   fscanf(m_ConfigFile, "ScreenWidth                : %d\n", &m_ScreenWidth);
   fscanf(m_ConfigFile, "ScreenHeight               : %d\n", &m_ScreenHeight);
   fscanf(m_ConfigFile, "ColorDepth                 : %d\n", &m_ColorDepth);
   fscanf(m_ConfigFile, "EnableAutoDepthStencil     : %d\n", &m_EnableAutoDepthStencil);
   fscanf(m_ConfigFile, "AutoDepthStencilFormat     : %d\n", &m_AutoDepthStencilFormat);
   fscanf(m_ConfigFile, "Fullscreen                 : %d\n", &m_Fullscreen);

   fclose(m_ConfigFile);
}
/********************************************************************************************/

/********************************************************************************************/
LPSTR CConfig::GetWindowTitel(void)
{
   return m_WindowTitel;
}
/********************************************************************************************/

/********************************************************************************************/
float CConfig::GetVersion(void)
{
   return m_Version;
}
/********************************************************************************************/

/********************************************************************************************/
int CConfig::GetVertexProcessing(void)
{
   return m_VertexProcessing;
}
/********************************************************************************************/

/********************************************************************************************/
int CConfig::GetScreenWidth(void)
{
   return m_ScreenWidth;
}
/********************************************************************************************/

/********************************************************************************************/
int CConfig::GetScreenHeight(void)
{
   return m_ScreenHeight;
}
/********************************************************************************************/

/********************************************************************************************/
int CConfig::GetColorDepth(void)
{
   return m_ColorDepth;
}
/********************************************************************************************/

/********************************************************************************************/
int CConfig::GetEnableAutoDepthStencil(void)
{
   return m_EnableAutoDepthStencil;
}
/********************************************************************************************/

/********************************************************************************************/
int CConfig::GetAutoDepthStencilFormat(void)
{
   return m_AutoDepthStencilFormat;
}
/********************************************************************************************/

/********************************************************************************************/
int CConfig::GetFullscreen(void)
{
   return m_Fullscreen;
}
/********************************************************************************************/



Config.txt muss so aussehen
Code:

Version                    : 0.00
VertexProcessing           : 3
ScreenWidth                : 640
ScreenHeight               : 480
ColorDepth                 : 32
EnableAutoDepthStencil     : 0
AutoDepthStencilFormat     : 16
Fullscreen                 : 1

_________________
MFG Sec
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
KI
JLI Master


Alter: 39
Anmeldedatum: 04.07.2003
Beiträge: 965
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 20.03.2004, 19:44    Titel: Antworten mit Zitat

mfc++ hat Folgendes geschrieben:
ja dann ist es halt ne ini datei. mir egal. hauptsache das programm liest die werte raus und kann was damit anfangen. oder es schreibt selber welche rein

Cool down. Cool
Ich hab dir nur gesagt was du wissen wolltest.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beni5
Super JLI'ler


Alter: 36
Anmeldedatum: 12.11.2003
Beiträge: 310
Wohnort: Switzerland
Medaillen: Keine

BeitragVerfasst am: 20.03.2004, 20:15    Titel: Antworten mit Zitat

Das ist doch ganz einfach. Mach einfach ne Textdatei und machst die Endung *.ini . Lade dann die Datei mit fopen, und schreib die Werte mit fprintf rein, Jede Zeile ein andere Wert , etwa so:
1024
768
1

Dann machste wieder fopen und mit fscanf kannst du dann zeile für zeile lesen. Dann machste halt: fscanf(Datei,"%i",AuflösungX); , fscanf(Datei,"%i",AuflösungY); , fscanf(Datei,"%i",Fullscreen); und dann haste deine Informationen.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
AFE-GmdG
JLI MVP
JLI MVP


Alter: 45
Anmeldedatum: 19.07.2002
Beiträge: 1374
Wohnort: Irgendwo im Universum...
Medaillen: Keine

BeitragVerfasst am: 20.03.2004, 20:30    Titel: Antworten mit Zitat

für Inidateien gibt es sogar Win32-Funktionen zum auslesen und reinschreiben!
_________________
CPP:
float o=0.075,h=1.5,T,r,O,l,I;int _,L=80,s=3200;main(){for(;s%L||
(h-=o,T= -2),s;4 -(r=O*O)<(l=I*I)|++ _==L&&write(1,(--s%L?_<(L)?--_
%6:6:7)+\"World! \\n\",1)&&(O=I=l=_=r=0,T+=o /2))O=I*2*O+h,I=l+T-r;}
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen
KI
JLI Master


Alter: 39
Anmeldedatum: 04.07.2003
Beiträge: 965
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 20.03.2004, 20:35    Titel: Antworten mit Zitat

AFE-GmdG hat Folgendes geschrieben:
für Inidateien gibt es sogar Win32-Funktionen zum auslesen und reinschreiben!

Genau! Arrow
Wir treten auf der Stelle! Das hab ich alles schon gesagt!

Siehe ein paar Posts weiter oben. (auch für Beni5 Wink )
KI hat Folgendes geschrieben:
In diesem Thread hab' ich das schonmal erwähnt. Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beni5
Super JLI'ler


Alter: 36
Anmeldedatum: 12.11.2003
Beiträge: 310
Wohnort: Switzerland
Medaillen: Keine

BeitragVerfasst am: 20.03.2004, 21:17    Titel: Antworten mit Zitat

Ich sehe in diesem Thread nichts von dir, was ich auch geschrieben habe. Confused


EDIT: Dann entschuldige ich Wink


Zuletzt bearbeitet von Beni5 am 20.03.2004, 21:50, insgesamt einmal bearbeitet
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
KI
JLI Master


Alter: 39
Anmeldedatum: 04.07.2003
Beiträge: 965
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 20.03.2004, 21:35    Titel: Antworten mit Zitat

Beni5 hat Folgendes geschrieben:
Ich sehe in diesem Thread nichts von dir, was ich auch geschrieben habe. Confused

Du hast gerade erklärt, dass man mit fopen und fprintf INI-Dateien bearbeiten kann.

Und ich habe im das hier in den anderen Thread geschrieben:
(Erleichtert auch dir das arbeiten mit INI-Dateien - darauf wollte ich hinweisen. Wink )
KI hat Folgendes geschrieben:
WritePrivateProfileString - schreiben
Code:
BOOL WritePrivateProfileString(
  LPCTSTR lpAppName,
  LPCTSTR lpKeyName,
  LPCTSTR lpString,
  LPCTSTR lpFileName
);

O. ooo Bei dieser Funktion müssen wir ja einen String übergeben.
Warum benutzen wir nicht einfach WritePrivateProfileInt, oder so was?
Tja, komischerweise haben die tollen Microsoft Leute diese Funktion für überflüssig gehalten.
Also müssen wir mit z.B wsprintf die Integervariable in eine Stringvariable umwandeln, damit die Funktion zufrieden ist.


GetPrivateProfileInt - lesen
Code:
UINT GetPrivateProfileInt(
  LPCTSTR lpAppName,
  LPCTSTR lpKeyName,
  INT nDefault,
  LPCTSTR lpFileName
);


Diese Funktionen erstellen und lesen aus einer INI-Datei.
Eine INI Datei ist textbasiert und man kann manuell leicht überprüfen was reingeschrieben worden ist, indem man sie mit dem Notepad öffnet.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
mfc++
JLI'ler


Alter: 40
Anmeldedatum: 18.02.2004
Beiträge: 163
Wohnort: Bettlä
Medaillen: Keine

BeitragVerfasst am: 24.03.2004, 17:56    Titel: Antworten mit Zitat

@ beni vielen dank du bist der der mir helfen konnte ;-P
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
KI
JLI Master


Alter: 39
Anmeldedatum: 04.07.2003
Beiträge: 965
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 24.03.2004, 18:24    Titel: Antworten mit Zitat

mfc++ hat Folgendes geschrieben:
@ beni vielen dank du bist der der mir helfen konnte ;-P

Bei mir brauch man sich ja nicht zu bedanken. schon klar!
Dir helf ich nie wieder! Twisted Evil
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
mfc++
JLI'ler


Alter: 40
Anmeldedatum: 18.02.2004
Beiträge: 163
Wohnort: Bettlä
Medaillen: Keine

BeitragVerfasst am: 02.01.2006, 14:37    Titel: Antworten mit Zitat

hey KI hab den tread wiedermal gelesen. tut mir leid das ich so war Smile jetzt im nachhinein hab ich deine sache auch kapiert und will dir dafür danken Wink thx
_________________
www.teslasystems.ch
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
KI
JLI Master


Alter: 39
Anmeldedatum: 04.07.2003
Beiträge: 965
Wohnort: Aachen
Medaillen: Keine

BeitragVerfasst am: 02.01.2006, 15:03    Titel: Antworten mit Zitat

hehe Very Happy
Gern geschehen. Wink
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    JLI Spieleprogrammierung Foren-Übersicht -> Entwicklung Alle Zeiten sind GMT
Seite 1 von 1

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.


Powered by phpBB © 2001, 2005 phpBB Group
Deutsche Übersetzung von phpBB.de

Impressum