Float aus Ini Datei lesen fehlerhaft?

05/02/2013 09:33 Cambios#1
Hey,
Ich möchte gerne ein Float aus einer Ini Datei lesen und nutze dafür GetPrivateProfileString + atof(), leider gibt es mir als ausgelesenen Wert nur "123" aus obwohl da ein ganz anderer Wert in der Ini-Datei drinsteht..
An was könnte das liegen? 123 ist ja nicht grade ne Typische Zahl die bei Fehler gesetzt wird :rolleyes:
Die Ini ist folgendermaßen aufgebaut:

Quote:
[WP1]
X=-9117.052734
Y=-39.992107
Z=90.691994
Grüße
05/02/2013 14:35 jacky919#2
Hast du dir mal das Eingelesene als Text ausgeben lassen? Ich meine nur um heraus zu finden ob der Fehler beim Konvertieren des Strings zum Float-Wert oder direkt beim Einlesen passiert.
05/02/2013 14:46 Schlüsselbein#3
Wie immer: Mit nem Debugger erstmal ausmachen, wo der Fehler auftritt.


Gruß
05/02/2013 15:53 Cambios#4
Quote:
Originally Posted by jacky919 View Post
Hast du dir mal das Eingelesene als Text ausgeben lassen? Ich meine nur um heraus zu finden ob der Fehler beim Konvertieren des Strings zum Float-Wert oder direkt beim Einlesen passiert.
Als Text ises ebenfalls 123, Frage mich aber wie der Wert 123 zustande kommen soll.. das ist meiner Meinung nach total unlogisch :confused:
Und Debugging bringt ja eher wenig, hab ich schon versucht, Nichts rausgefunden gehabt.
05/02/2013 18:00 Nightblizard#5
Lass mich in meine Glaskugel schauen:
Dein Fehler liegt in Zeile 25, ist recht offensichtlich!



Falls du ernsthaft Hilfe erwatest solltest du uns deinen Code zeigen...
05/02/2013 23:17 Cambios#6
Ist ja nicht wirklich viel Source wo man besonders viel falsch machen könnte.. alles im Source hab ich ja oben erwähnt aber gut, hier ma der Source^^

Quote:
#include <iostream>
#include <windows.h>
#include <conio.h>
#include <string>
using namespace std;

int main()
{
char X[100];
GetPrivateProfileString("WP1","X","NULL",X,100,"Co ords.ini");
cout<<atof(X);
cin.get();
}
05/03/2013 00:18 Dr. Coxxy#7
lass doch einfach mal den string den du ausgelesen hast ausgeben...

Quote:
"Co ords.ini"
Code:
if (strcmp("NULL", X)) // blabla
Quote:
Originally Posted by msdn
Return value
The return value is the number of characters copied to the buffer, not including the terminating null character.
etc...

und benutz ordentliche variablen/section/etc. namen...
05/03/2013 00:36 Cambios#8
Quote:
Originally Posted by Dr. Coxxy View Post
lass doch einfach mal den string den du ausgelesen hast ausgeben...
Hab ich, wie schon erwähnt ist der String angeblich "123", und das kann ja nicht zutreffen.

Quote:
Originally Posted by Dr. Coxxy View Post
und benutz ordentliche variablen/section/etc. namen...
Variablennamen passen doch.. die Ini soll nen Waypoint Profile sein wo X , Y & Z Koordinaten drinstehn die er abarbeiten soll, WP = Waypoint.
Was ist daran nicht ordentlich?..
Was ist für die X Koordinate z.b zutreffender als X als Variablen-name?
05/03/2013 01:44 Dr. Coxxy#9
zeig mal die ini.
und vergiss nicht, wenn du direkt aus der ide per f5 das prog startest ist der arbeitspfad nicht der pfad der .exe.
nimm mal anstatt
Quote:
"Coords.ini"
das:
Quote:
".\\Coords.ini"
05/03/2013 13:17 Cambios#10
Quote:
Originally Posted by Dr. Coxxy View Post
zeig mal die ini.
und vergiss nicht, wenn du direkt aus der ide per f5 das prog startest ist der arbeitspfad nicht der pfad der .exe.
nimm mal anstatt

das:
Ini sieht so aus:

Code:
[Walkbot Profile]
[WP1]
X=-9117.052734
Y=-39.992107
Z=90.691994
Die Ini selbst erstelle ich mit nem anderm Programm von mir was mir die Coords meines Charakters von nem Spiel alle paar Sekunden speichert und dann als Waypoints in die Ini packt.
Habe jetzt aber nur 1 Waypoint in der Ini drin zum test, um Fehler von meinem anderem Programm auzuschließen.

Und Die Ini hab ich selbstverständlich auch ins Verzeichniss reingepackt von der Compilierten Binary - wär ja peinlich wenn nicht :o
Ansonsten hab ich aber keine Ahnung was da noch der Fehler sein könnte,
als ich damals mal das gleiche benutzt hatte (nur ohne float Zahlen sondern normalen Strings) ging alles wunderbar, und da hatte ich es genauso gemacht gehabt.
05/03/2013 13:29 Dr. Coxxy#11
Quote:
Originally Posted by Cambios View Post
blabla
jetzt noch ".\\Coords.ini" draus machen, wie ich bereits geschrieben habe, dann klappts auch.

EDIT:
Quote:
Originally Posted by Cambios View Post
Und Die Ini hab ich selbstverständlich auch ins Verzeichniss reingepackt von der Compilierten Binary - wär ja peinlich wenn nicht
ich meinte damit, dass wenn du das programm aus ner ide startest, wie z.b. visual studio das workingdir woanders ist, als das directory der .exe - er also die ini im gleichen ordner nicht finden wird.
05/03/2013 16:03 Cambios#12
Es lag doch ernsthaft am ".\\Coords.ini".. wtf^^
Vielen Dank, das es daran liegt hätte ich als letztes gedacht.. so ne Kleinigkeit..ohman^^
Peinlich..