Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Aus Ini Strings lesen und vergleichen

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
28.07.2005, 08:46 Uhr
~neubeic
Gast


Hallo,
ich komme einfach nicht weiter. Ich lese was aus einer ini-datei.
Das klappt gut. Dann will ich das ausgelesene vergleichen.


Hier mal etwas code:


C++:
char *cpIniSectionName, *cpIniKeyName, *cpIniContent, *cpIniPath;
cpIniSectionName="Sektion1";
cpIniKeyName="String1";
cpIniContent="INI-ERROR";
cpIniPath="c:\\test.ini";

GetPrivateProfileString(cpIniSectionName, cpIniKeyName, "INI-ERROR", cpIniContent, 64, cpIniPath);

if(strcmp(cpIniContent, "INI-ERROR")==0)
{
   MessageBox(NULL, cpIniContent, "fehler beim ini lesen", MB_OK);
}



Ich bekomme die MessageBox jedesmal zu sehen.
Als Inhalt sehe ich den Wert meiner Ini-Datei, aber das
strcmp sagt, das da was anderes drin steht (Ini-Error, meine Standard-Initialisierung)
Vielleicht mache ich auch etwas ganz grundlegendes verkehrt!?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.07.2005, 09:47 Uhr
Airdamn



so sollte es gehen:

C++:
char *cpIniSectionName, *cpIniKeyName, *cpIniContent, *cpIniPath;
cpIniSectionName="Sektion1";
cpIniKeyName="String1";
//cpIniContent="INI-ERROR";
cpIniPath="c:\\test.ini";

GetPrivateProfileString(cpIniSectionName, cpIniKeyName, "INI-ERROR", cpIniContent, 64, cpIniPath);

if(strcmp(cpIniContent, "INI-ERROR")==0)
{
   MessageBox(NULL, cpIniContent, "fehler beim ini lesen", MB_OK);
}
else
{
   MessageBox(NULL, cpIniContent, "OK", MB_OK);
}


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
28.07.2005, 16:20 Uhr
~neubeic
Gast


Wenn ich das nicht initialisiere, bekomm ich eine Warnung:

Kompilierung läuft...
DataSafe.cpp
EDev_Win\Test.cpp(260) : warning C4700: Lokale Variable 'cpIniContent' wurde ohne Initialisierung verwendet
Linker-Vorgang läuft...

DataSafe.exe - 0 Fehler, 1 Warnung(en)

und in der Variablen cpIniContent steht nichts drin.
Wenn ich den Rückgabewert von GetPrivateProfile... ausgebe, sagt er,
dass er 0 zeichen kopiert hat, also nicht mal den "Fehlerstring" (Ini-Fehler).

Ich blick das gerade garnicht so richtig was geschieht.
Warum kopiert er 0. Und warum nicht den Fehlerstring wenn was schiefgeht?
(Wenn ich cpIniContent initialisiere, kopiert er wenigstens den Inhalt)

jemand ne idee, oder irgendwas dazu?
mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
28.07.2005, 20:22 Uhr
~neubeic
Gast


Das Problem ist leider immernoch aktuell.
Habe jetzt echt lange rumgetestet, komme immer zum selben
(schlechten) Ergebnis.

Wenn ich meine Frage unklar gestellt habe, bitte nachfragen, ich poste dann nochmal.

mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
28.07.2005, 21:12 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


naja würde mal sagen das programm erwartet für den content einen schreibbaren speicher und mit deiner initialisierung ist dieser const
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
28.07.2005, 21:54 Uhr
~neubeic
Gast


thx.

wenn ich den nicht initialisiere, schreibt er aber 0 characters in den puffer.
(ist eigentlich eine 9stellige zahl)
er benutzt nicht mal den standard-string, sonder kopiert glatt 0.
da versteh ich nicht.
also, es muss mehr sein, wie nur "nicht initialisieren".
(leider)

please help
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
28.07.2005, 22:11 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


probier mal


C++:
char cpInitContent[1025]; // platz für 1024 Zeichen "initialisieren"

char *cpIniSectionName, *cpIniKeyName, *cpIniPath;
cpIniSectionName="Sektion1";
cpIniKeyName="String1";
//cpIniContent="INI-ERROR";
cpIniPath="c:\\test.ini";

GetPrivateProfileString(cpIniSectionName, cpIniKeyName, "INI-ERROR", cpIniContent, 64, cpIniPath);

if(strcmp(cpIniContent, "INI-ERROR")==0)
{
   MessageBox(NULL, cpIniContent, "fehler beim ini lesen", MB_OK);
}
else
{
   MessageBox(NULL, cpIniContent, "OK", MB_OK);
}


--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
28.07.2005, 22:21 Uhr
~neubeic
Gast


ich habe das getestet, und oh wunder, es funzt - groddes THX!!

... aber warum, bzw warum nehm ich da keinen Pointer für den Content?
(aus interesse)
mfg
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
28.07.2005, 22:22 Uhr
~neubeic
Gast


komisches wort: tausche "groddes" gg. grosses (im letzten post)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
28.07.2005, 22:25 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


naja wenn du den pointer nicht initialisierst, kriegst du auch nix zurück, und bei deiner variante ist der pointer zwar nicht konstant, jedoch zeigt er auf einen konstanten string und nicht auf eine "variable".und bei meiner methode (die dann auch funktioniert) zeigt er auf einen speicherbereich der auch schreibbar ist.
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


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: