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
|
Verfasst am: 20.03.2004, 11:05 Titel: eigene config-datei in c++ |
|
|
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 |
|
 |
KI JLI Master

Alter: 39 Anmeldedatum: 04.07.2003 Beiträge: 965 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 20.03.2004, 11:32 Titel: |
|
|
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.  |
|
Nach oben |
|
 |
mfc++ JLI'ler
Alter: 40 Anmeldedatum: 18.02.2004 Beiträge: 163 Wohnort: Bettlä Medaillen: Keine
|
Verfasst am: 20.03.2004, 16:11 Titel: |
|
|
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 |
|
 |
Sec Junior JLI'ler
Anmeldedatum: 18.09.2002 Beiträge: 88
Medaillen: Keine
|
Verfasst am: 20.03.2004, 16:23 Titel: |
|
|
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 |
|
 |
KI JLI Master

Alter: 39 Anmeldedatum: 04.07.2003 Beiträge: 965 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 20.03.2004, 19:44 Titel: |
|
|
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.
Ich hab dir nur gesagt was du wissen wolltest. |
|
Nach oben |
|
 |
Beni5 Super JLI'ler
Alter: 36 Anmeldedatum: 12.11.2003 Beiträge: 310 Wohnort: Switzerland Medaillen: Keine
|
Verfasst am: 20.03.2004, 20:15 Titel: |
|
|
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 |
|
 |
AFE-GmdG JLI MVP


Alter: 45 Anmeldedatum: 19.07.2002 Beiträge: 1374 Wohnort: Irgendwo im Universum... Medaillen: Keine
|
Verfasst am: 20.03.2004, 20:30 Titel: |
|
|
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 |
|
 |
KI JLI Master

Alter: 39 Anmeldedatum: 04.07.2003 Beiträge: 965 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 20.03.2004, 20:35 Titel: |
|
|
AFE-GmdG hat Folgendes geschrieben: | für Inidateien gibt es sogar Win32-Funktionen zum auslesen und reinschreiben! |
Genau!
Wir treten auf der Stelle! Das hab ich alles schon gesagt!
Siehe ein paar Posts weiter oben. (auch für Beni5 )
KI hat Folgendes geschrieben: | In diesem Thread hab' ich das schonmal erwähnt.  |
|
|
Nach oben |
|
 |
Beni5 Super JLI'ler
Alter: 36 Anmeldedatum: 12.11.2003 Beiträge: 310 Wohnort: Switzerland Medaillen: Keine
|
Verfasst am: 20.03.2004, 21:17 Titel: |
|
|
Ich sehe in diesem Thread nichts von dir, was ich auch geschrieben habe.
EDIT: Dann entschuldige ich 
Zuletzt bearbeitet von Beni5 am 20.03.2004, 21:50, insgesamt einmal bearbeitet |
|
Nach oben |
|
 |
KI JLI Master

Alter: 39 Anmeldedatum: 04.07.2003 Beiträge: 965 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 20.03.2004, 21:35 Titel: |
|
|
Beni5 hat Folgendes geschrieben: | Ich sehe in diesem Thread nichts von dir, was ich auch geschrieben habe.  |
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. )
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 |
|
 |
mfc++ JLI'ler
Alter: 40 Anmeldedatum: 18.02.2004 Beiträge: 163 Wohnort: Bettlä Medaillen: Keine
|
Verfasst am: 24.03.2004, 17:56 Titel: |
|
|
@ beni vielen dank du bist der der mir helfen konnte ;-P |
|
Nach oben |
|
 |
KI JLI Master

Alter: 39 Anmeldedatum: 04.07.2003 Beiträge: 965 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 24.03.2004, 18:24 Titel: |
|
|
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!  |
|
Nach oben |
|
 |
mfc++ JLI'ler
Alter: 40 Anmeldedatum: 18.02.2004 Beiträge: 163 Wohnort: Bettlä Medaillen: Keine
|
Verfasst am: 02.01.2006, 14:37 Titel: |
|
|
hey KI hab den tread wiedermal gelesen. tut mir leid das ich so war jetzt im nachhinein hab ich deine sache auch kapiert und will dir dafür danken thx _________________ www.teslasystems.ch
 |
|
Nach oben |
|
 |
KI JLI Master

Alter: 39 Anmeldedatum: 04.07.2003 Beiträge: 965 Wohnort: Aachen Medaillen: Keine
|
Verfasst am: 02.01.2006, 15:03 Titel: |
|
|
hehe
Gern geschehen.  |
|
Nach oben |
|
 |
|