INI Datei lesen



  • Grüss,

    ich hab da ein Problem!!!
    Ich lass eine INI datei in meinen Dialog schreiben... das problem ist jetzt man kann sich selbst die Bezeichnung wählen... das heist ich weis nicht wie der Key am ende heist und welchen wert er hat.
    Gleichzeitig wir die Bezeichnung in eine Listbox geschrieben zur einfachen auswahl!!

    Jetzt ist aber das Problem ich müsste die Liste speichern damit der Benutzer später noch weis wie welche KEY heist.
    Jetzt hab ich mir überlegt einfach in der INI nachzu schauen wie die heisen und die dann wieder bei Programm start in die Liste zu schreiben.
    Das problem ist... ich weis nicht wie ich das machen soll... wie kann ich alle KEYs in einer SECTION auslesen???

    MfG crasy

    P.S: Ich schätze mal die Frage ist einfach aber denoch komm ich C++ Schüler nicht drauf 😞 mein Lehrer ist auch keine Hielfe dabei 😞



  • Alles Sections:

    GetPrivateProfileSectionNames
    

    Alle Keys in einer Section:

    GetPrivateProfileSection
    


  • Vielen Dank

    aber jetzt kommt gleich das nächste Problem was ich nicht lösen kann damit 😞
    Hab mir eine nette Funktion geschrieben !!!
    Damit ich nicht immer so viel schreiben muss ^^

    CString CErweiterung::getkeysection(CString section,CString filename,CString direktory)
    {
    
        if (direktory == "")
        {
            char *direkt = new char[500];
            int laenge = GetCurrentDirectory(499,direkt);
            direkt[laenge] = NULL;
            direktory.Format("%s",direkt);
            delete []direkt;
        }
        char *pBuf = new char[300];
        CString returnstring;
    	GetPrivateProfileSection(section,pBuf,300,direktory + "\\" + filename + ".ini");
        returnstring.Format("%s",pBuf);
        delete []pBuf;
        return returnstring;
    }
    

    Das Problem ist das der nur den Ersten Eintrag ausgibt... was hab ich falsch gemacht ??? hab ich irgend was vergessen ???

    P.S: Die Funktion ist eine abwandlung von einer die ich hier im Forum gefunden habe.



  • Du hast vergessen die Doku zur Funktion aufmerksam zu lesen...
    Wie werden die einzelnen Key-Value Paare nochmals voreinander getrennt!?



  • ausserdem ist dein code herbe gefrickelt



  • @Jochen Kalmbach
    Na wenn ich richtig gelesen habe mit einem null-terminated.
    Aber das bringt mich nicht weiter 😞
    Da ich nich weis was mir das bringt

    @frickel-detector
    Was meinst du damit ???



  • Abgesehen davon das Du die Funktion nur abgetippt hast den die habe vor Jahren mal ich geschrieben um zu zeigen wie es ungefähr geht.

    Du musst Dir schon die MSDN zu einer Funktion durchlesen.
    Wenn Du nur Code abtippst und danach änderungen verlangst wirst Du in Zukunft auch bei anderen Funktionen probleme bekommen.

    In der MSDN steht eigenbtlich alles drin wie Die Funktion aufzurufen und zu verwenden ist.
    Stichwort z.B. Schleife.
    Vorsicht: DIe Funktion der API übergeht hierbei keine Einträge welche mit "#" beginnen.



  • Ich hab nie behauptet das ich die alleine geschrieben habe...
    Ich entschuldige mich wenn ich jemanden damit was angetahen habe oder in irgend einer art beleidigt habe !!!

    Und darf ich die nicht abtippen???

    Das mit der MSDN ist mir auch Klar und das das mit Schleifen geht ist mir auch klar... das Problem ist blos das in meiner MSDN nix zu den Funktionen steht !!!
    weis leider nicht warum 😞
    Deshalb habe ich ja auch die Fragen gestellt!!!sonst hät ich die garnicht gestellt wenn ich was gefunden hätte!!!

    Und auserdem ich wollte weder das ihr mir denn Quelltext schreib noch sonst was ich wollte blos ein anhaltspunkt haben nach was ich suchen muss damit ich weiter komme !!!

    Also ich entschuldige mich nochmal das ich eure Wertvolle zeit mit meinen Fragen verschwendet habe !!!
    Aber da ich leider ein NOOB bin in diesen sachen... aber na lassen wir das ich weis ja jetzt wonach ich suchen muss.

    Noch mals "Dank" für die "Hilfe" !!!



  • cra5y schrieb:

    Vielen Dank

    aber jetzt kommt gleich das nächste Problem was ich nicht lösen kann damit 😞
    Hab mir eine nette Funktion geschrieben !!!
    Damit ich nicht immer so viel schreiben muss ^^

    P.S: Die Funktion ist eine abwandlung von einer die ich hier im Forum gefunden habe.

    Natürlich darf Du die verwenden aber es ist keine "abwandlung" sondern 1zu1 kopiert.

    Hier ein link aus der MSDN
    [url]
    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/getprivateprofilesectionnames.asp
    [/url]

    Wenn du das nächstemal eine Code aus dem Forum verwendest dann Linke zu dem Beitrag. Das erleichtert für die anderen dir zu helfen da solche Codes schon X-Mal behandelt werden und man kann von bestehenden Beiträgen ausgehen.
    Som muss jemand erst suchen wo du den Code her hast.



  • Oo tausend dank hat mir sehr viel geholfen !!!
    Hab jetzt blos noch ein Problem.. wie bekomm ich raus wie viel Keys in der Section sind ???

    Hab das hinzugefügt ( zu deinem Code):

    //...
    	int h_pos = 0,
    		h_p = 0,
    		h_pos_gleich,
    		i;
    
    	CString returnstring,ausgabe;
    
    	for(i = 0; i < 10; ++i)
    	{
    		returnstring.Format("%s",&pBuf[h_p]);
    		h_pos = returnstring.Find('\0');
    
    		ausgabe = returnstring;
    		h_pos_gleich = ausgabe.Find('=');
    
    		ausgabe = ausgabe.Left(h_pos_gleich);
    		m_clb_liste.AddString(ausgabe);
    
    		UpdateData(FALSE);
    		h_p += h_pos +1;
    	}
    //...
    

    ich schätze ihr hätte das kürzer hinbekommen aber ich bin froh das ist das überhauüt hinbekommen habe xD

    Da das in einer For-Schleife läuft brauch ich ja irgend ein Max wert wie lange die laufen muss... das problem wie bekomm ich den ???
    Der Max wert ist ja die Anzahl der Key in der Section aber wo bekomm ich den wert her ???

    Oder nimmt man da eine andere Schleife... aber ich wüsste jetzt nicht welche !!!



  • Warum versucht Du es nicht z.B. mit einer while-SChleife wenn es mit for nicht geht.


Log in to reply