Ini-Datei "richtig" auslesen
-
hi!
Ich bin gerade am basteln eines kleinen Spiels und möchte nicht erst noch ein Menu für best. Werte erstellen, sondern alles direkt aus einer .ini Datei auslesen...
Außerdem ist das auch eine nette Übung für die spätere ini-Datei...Also der Aufbau sieht folgendermaßen aus:
Variable1=15 Variable2=54234 Variable3=357624Also
Variablenname(kann auch Zahlen enthalten)=ZahlenwertDas Problem ist, dass ich nicht weiß wie ich das am Besten auslesen kann;
Soll ich alles Zeichen für Zeichen auslesen und abfragen ob ein "=" vorkommt und die restlichen Zeichen in einen Zahlenwertumwandeln?
Allerdings sollte wenn möglich vor und nach dem "=" ein bzw. mehrere Leerzeichen möglich sein...Ich weiß leider nicht ob es da eine spezielle Art gibt wie man solche Dateien am Besten auslesen kann aber das mit dem Zeichen für Zeichen ist das einzige was mir bisher eingefallen ist...Hab mich mit ifstream und ofstream eben noch nicht wirklich beschäftigt...kennt ihr dazu vlt ein Tut?
Außerdem möchte ich die Datei später verschlüsseln damit sie niemand einfach mit einem Editor öffnen und verändern kann... gibts da vlt ne einfache Möglichkeit... ohne nen Seitenlangen Algo.?
Bin dankbar für alle konstruktiven Vorschläge!
MfG Kuldren
-
Um INI-Datein auszulesen, gibts nen paar nützliche Funktionen aus der Win-API:
GetPrivateProfileInt/Section/SectionNames/String/Struct
und
WritePrivateProfileSection/String/Struct.Allerdings braucht deine Datei, wie eine richtige INI-Datei, auch Sections. Also sowas:
[Schiessen] Reichweite=10 Toeten = 20Wenn du die Datei verschlüsseln willst, würde ich gleich eher RAW-Werte reinschreiben. Hab mir für sowas mal ne Klasse geschrieben, sieht in etwa so aus:
class CRawDataSet { private: char* m_pBuf; long m_iSize; public: ... void AddString( LPCTSTR Str ) { Add( Str, strlen(Str)+1 ); } void Add( const void* pBuf, long Size ) { m_pBuf = (char*)realloc( m_pBuf, m_iSize+Size ); CopyMemory( m_pBuf+m_iSize, pBuf, Size ); m_iSize += Size; } template<class Cl> void Add( Cl Elem ) { Add( (const void*)&Elem, sizeof(Cl) ); } const char* GetBuf() {return m_pBuf;} long GetSize() {return m_iSize;} bool SaveToFile( LPCTSTR Path ) { ... } }; ... LONG Schiessen; RawDataSet.Add( Schiessen ); ... RawDataSet.SaveToFile( "C:\\alsd.kasnd" );Finde ich persönlich effizienter, ist aber definitiv Geschmackssache

-
ist das nicht winapi?
-
Dieser Thread wurde von Moderator/in rapso aus dem Forum Spiele-/Grafikprogrammierung in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
@Badestrand: Nimm allg. anstatt malloc/free mal new/delete. Das ist neuer
.
-
@Badestrand: Danke für die Infos werd mir das gleich mal ansehen!
MfG Kuldren
-
CodeFinder schrieb:
@Badestrand: Nimm allg. anstatt malloc/free mal new/delete. Das ist neuer
.Hast auf jeden Fall recht! In gutem C++-Stil soll man ja kein c-Krams mehr verwenden und ich glaube, malloc und free sind c-Krams.
Ich hab nur ein Problem damit, dass es bei new/delete nix äquivalentes zu realloc gibt. Oder gibts da was?
-
- new
- memcopy
- delete

-RB