GetPrivateProfileInt() Liefert immer 0 zurück!
-
Hi Forum,
ich versuche mit der GetPrivateProfileInt() den Integerwert des Schlüssels der in der Section gespeichert ist zu bekommen, aber ich erhalte immer 0 zurück!
Kann jemand helfen?// s_CurrentPC ist der Name der Section // s_Num Name des Schlüssels, hier ist s_Num = "1"; wird in der Schleife beim speichern um 1 erhöht // csPathMainProject ist die Datei mit Pfad aus der gelesen wird int index = GetPrivateProfileInt(s_CurrentPC,s_Num,0,csPathMainProject); // kleiner Ausschnitt aus der Datei: [DEVELOP10] // Section beginn 1=R:\...\...\ // 1 ist der Keyname den ich mit der Funktion in Integer umwandeln möchte 2=R:\...\...\ // 2 ist der Keyname den ich mit der Funktion in Integer umwandeln möchte 3=R:\...\...\ // 3 ist der Keyname den ich mit der Funktion in Integer umwandeln möchte ... ... ...
Ziel des ganzen ist unter anderem eine sortierung zu ermöglichen, wenn z.B. Schlüssel 2 gelöscht wird,
dann wird ein neuer Schlüssel mit dem Wert 2 an das ende der Datei, der Section, nach dem Schüssel 3 gespeichert!
Danke
Mirsad
-
Ich nehme mal an, du erhälst immer 0 zurück, weil das in deinem Aufruf als Default-Rückgabewert angegeben ist, der zurückgegeben wird, wenn der Schlüssel nicht gefunden wird.
Und daher vermute ich weiter, dass der Inhalt von s_CurrentPC, s_Num oder csPathMainProject eben doch nicht das enthält, was du angegeben hast. Oder vielleicht steht da auch nur der Dateiname drin (ohne Pfad) oder sonstwas...
Schlecht zu sehen, von dieser Position hier...Ein weiterer Punkt, warum das nicht klappt, könnte daran liegen, dass GetPrivateProfileInt(...) einen Integer zurück geben will. Dein Schlüsselwert sieht mir aber eher nach einem Pfad (also String) aus. Ob das zutrifft könntest du feststellen, wenn du mal den Default-Rückgabewert änderst. Wenn dann immernoch 0 zurück kommt, hat er Probleme mit der Umwandlung vom Pfad in einen int.
-
Mirsad schrieb:
1=R:\...\...\ // 1 ist der Keyname den ich mit der Funktion in Integer umwandeln möchte
Das ist doch das gleiche, was in s_Num steht.
-
Hallo isabeu,
das stimmt schon was du sagst, das sind Pfade, ich hab sie nur agekürzt um hier platz zu sparen. Und die zahlen vor jeden pfad ist der unterschlüssel nach dem ich suche, und in s_Num steht in diesem beispiel 1 als string, und ich suche nach dem unterschlüssel mit dem wert der in s_Num steht und die nul ist der default wert wenn der nichts gefunden wurde, habs jetzt mit strings gelöst aber das gefällt mir nicht!, wenn ich das mit dem integer hinbekommen würde dan könnte ich bessere sortierfunktion schreiben als die ich jetzt habe, in dem ich die ganzen pfade mit einander vergleiche, so nach dem motto wenn pfad 1 grösser als pfad 2 dan tausche :-), ich möchte aber das ich nach den zahlen sortiere
mfg
mirsad
-
Hallo,
ich brauche den Integerwert des Schlüssels der immer als "nummer" gespeichert wird!
mirsad
-
Mirsad schrieb:
Hi Forum,
ich versuche mit der GetPrivateProfileInt() den Integerwert des Schlüssels der in der Section gespeichert ist zu bekommen, aber ich erhalte immer 0 zurück!
Kann jemand helfen?// s_CurrentPC ist der Name der Section // s_Num Name des Schlüssels, hier ist s_Num = "1"; wird in der Schleife beim speichern um 1 erhöht // csPathMainProject ist die Datei mit Pfad aus der gelesen wird int index = GetPrivateProfileInt(s_CurrentPC,s_Num,0,csPathMainProject); // kleiner Ausschnitt aus der Datei: [DEVELOP10] // Section beginn 1=R:\...\...\ // 1 ist der Keyname den ich mit der Funktion in Integer umwandeln möchte 2=R:\...\...\ // 2 ist der Keyname den ich mit der Funktion in Integer umwandeln möchte 3=R:\...\...\ // 3 ist der Keyname den ich mit der Funktion in Integer umwandeln möchte ... ... ...
Ziel des ganzen ist unter anderem eine sortierung zu ermöglichen, wenn z.B. Schlüssel 2 gelöscht wird,
dann wird ein neuer Schlüssel mit dem Wert 2 an das ende der Datei, der Section, nach dem Schüssel 3 gespeichert!
Danke
Mirsadmein fehler, GetPrivateProfileInt() liefert mir nicht den nummerischen wert des schlüssels wie ich gedacht habe sondern versucht den wert der unter den angegebenen schlüssel gespeichert ist in integer zu wandeln und zurück zu geben, was eigentlich falsch ist, ich versuche hier nicht den wert 1 in integer zu wandeln sondern den string der unter 1 gespeichert ist,
hier bei mir ist das "R:\...\...\ " was unter schlüssel 1 gespeichert ist!
damit es funktioniert müsste unter 1 z.B:
1 = 400
das würde problemlos funktionieren!
mirsad
-
Ich bin mal so frei mich selbst zu zitieren:
isabeau schrieb:
Ein weiterer Punkt, warum das nicht klappt, könnte daran liegen, dass GetPrivateProfileInt(...) einen Integer zurück geben will. Dein Schlüsselwert sieht mir aber eher nach einem Pfad (also String) aus.
-
Kennst du eigentlich atoi(...) ?
-
hi,
ja ich kenne atoi(), das benutze ich auch :D, damit hole ich jetzt die schlüssel und wandle sie so um, ich dachte ja nur das es auch mit GetPrivateProfileInt gehen könnte!