Daten aus .ini auslesen und verwenden

Golumserbe

Grünschnabel
Guten Tag,

Ich hab schon Gegooglet hat aber nichts gebracht. Dort lerne ich nur wie ich sie auslese, aber ich möchte das auch verwenden.

was ich möchte:

Das man Daten aus einer .ini Datei ausließt und den in einer .dll Verwenden kann.

test.ini

Code:
[Beispiel]
Wert=true

Danach will ich in C++ den wert true einlesen und für eine int Funktion verwenden also ob sie true oder false ist (aktiviert/deaktiviert).

Ich hab es mal versuch ging aber nicht...

Code:
#define DEFAULTVALUE_MATCHES (4711)

DWORD Name = GetPrivateProfileInt("Beispiel", "Wert", DEFAULTVALUE_MATCHES, "test.ini");

int BeiSpiel = Name;

// und bei Name soll jetzt von der .ini ausgelesen werden, obs true oder false ist.

Wäre nett wenn mir einer Helfen würde was ich falsch mache.
 
Hi.

Wieso verwendest du GetPrivateProfileInt wenn der Wert des Schlüssels überhaupt keine Zahl ist?

Verwende GetPrivateProfileString und schau dann nach ob der String gleich "true" ist.

Gruß
 
Wie deepthroat sagte, solltest du GetPrivateProfileString verwenden oder du setzt anstatt true/false 1/0 ein, dann funktioniert es!
Hier ist mal ein Beispiel von beide:
C++:
bool Wert;

// GetPrivateProfileString

char WertTmp[5]; // Max. hat false 5 Buchstaben

GetPrivateProfileString("Beispiel", "Wert", "false", WertTmp, sizeof(WertTmp)/sizeof(char), "yourini.ini");  // Default ist false
Wert = (((char*)WertTmp)=="true"));

// GetPrivateProfileInt

Wert = GetPrivateProfile("Beispiel", "Wert", false, "yourini.ini"); // Default ist false
 
Entschuldigung geht aber immer noch nicht, der Wert gibt wahrscheinlich immer ein false ab! und mit 0 oder 1 geht es auch nicht.
 
Du musst eine entsprechende Stringvergleichfunktion verwenden, bsp strcmp oder stricmp. Oder aber du verwendest std::string.
 
@Cromon: Ja klar, ist mir gerade auch aufgefallen. Ich ziehe Strings vor:
C++:
Wert = (std::string(WertTmp)=="true")
 
Hallo, ich habe auch mal ausprobiert, GetPrivateProfileString liefert immer false :confused:
Deswegen kommt es nicht richtig, denn der Output der Funktion ist immer das Defaultargument :(
Weiter komme ich leider auch nicht
 
Hallo, ich habe auch mal ausprobiert, GetPrivateProfileString liefert immer false :confused:
Deswegen kommt es nicht richtig, denn der Output der Funktion ist immer das Defaultargument :(
Weiter komme ich leider auch nicht
Die Doku hast du wohl nicht gelesen, oder?!
lpFileName [in]

The name of the initialization file. If this parameter does not contain a full path to the file, the system searches for the file in the Windows directory.

In C++ würde sich evtl. ein String-Stream anbieten:
C++:
bool Wert;

if (std::istringstream(WertTmp) >> std::boolalpha >> Wert) {
  // Wert ist ...
} else {
  // fehlerhafte Eingabe
}
Gruß
 

Neue Beiträge

Zurück