Problem mit Ini Auslesen (hab in die FAQ geguckt)



  • Tach erstmal,

    jaa ich hab in die FAQ geschaut und hab geguckt, was dort zu Ini Dateien steht, aber es hat nicht geklappt.
    Die Datei wird einfach nicht ausgelesen:

    DWORD destSize = 1000;
    char szBlinktime[destSize];
    
                GetPrivateProfileString("blinking","Blinktime","0",szBlinktime,destSize,"config.ini");
    
    MessageBox(0, szBlinktime, szBlinktime, MB_OK);
    

    Es wird immer 0 ausgegeben, also der Defaultwert wenn die Ini nicht ausgelesen werden kann.



  • baugrube187 schrieb:

    Es wird immer 0 ausgegeben, also der Defaultwert wenn die Ini nicht ausgelesen werden kann.

    Was soll denn sonst passieren?



  • wo liegt denn deine config.ini? ich vermute jetzt mal ganz stark in deinem projectordner!

    die msdn schreibt dazu

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



  • Badestrand schrieb:

    baugrube187 schrieb:

    Es wird immer 0 ausgegeben, also der Defaultwert wenn die Ini nicht ausgelesen werden kann.

    Was soll denn sonst passieren?

    Na vielleicht sollte sie das ausgeben, was drinsteht?

    Ja, das wars, musste in den Windows-Ordner, jetzt werde ich mal gucken, wie man das am besten machen könnte.

    /edit:

    Soo, kleines Problöööömchen:

    int arraypos = strrchr(pathname, 'e') - 2;

    Folgender Fehler bei Kompilieren mit MinGW:
    main.cpp|250|error: invalid conversion from `char*' to `int'|

    Wo ist da bitteschön ein char* ?

    pathname ist ein Char Array und 'e' ist natürlich int



  • baugrube187 schrieb:

    Wo ist da bitteschön ein char* ?

    Im Rückgabewert von strrchr.



  • Oh, tja darauf war ich nicht vorbereitet 😃

    Wie kann man das denn dann umwandeln in die Position des Buchstaben als Ganze Zahl?

    DWORD destSize = 100;
                char szBlinktime[destSize];
                char pathname[MAX_PATH];
                char inipath[MAX_PATH];
    
                GetModuleFileName(NULL, pathname, MAX_PATH);
                int arraypos = (int) strrchr(pathname, 'e') - 2;
                strncpy(inipath, pathname, arraypos);
                strcat(inipath, "ini");
                GetPrivateProfileString("blinking","Blinktime","0",szBlinktime,destSize,inipath);
    
                MessageBox(0, szBlinktime, szBlinktime, MB_OK);
                unsigned int blinktime = atoi(szBlinktime);
    


  • baugrube187 schrieb:

    Wie kann man das denn dann umwandeln in die Position des Buchstaben als Ganze Zahl?

    Indem du den String, in dem du suchst, vom Ergebnis abziehst, wenn es von NULL verschieden ist.



  • warum machst du es so kompliziert?
    würde

    int pos = strlen(pathname) - 3;
    strncpy(inipath, pathname, pos);
    strcat(inipath, "ini");
    

    nicht reichen?
    du willst doch blos die extention entfernen oder?



  • Eigentlich schon, aber es funktioniert irgendwie nicht, wenn ich mit dann inipath als Messagebox ausgeben lasse, zeigt er mir rigendwelche kryptischen Zeichen zwischen dem '.' und 'ini' an.



  • Komisch, jetzt funktionierts ...


Log in to reply