.ini-Datei mit wxWidgets



  • Hallo!

    Ich versuche schon seit Stunden mit wxWidgets eine .ini-Datei einzulesen, bin aber ein totaler Anfänger bei wxWidgets.

    Der Pfad der .ini-Datei liegt schon als wxString vor.

    Am liebsten würde ich die Datei zeilenweise in ein wxArrayString einlesen.
    Dann könnte ich die mit Semikolon getrennten Einträge daraus ermitteln.
    Soweit habe ich es bisher - vergeblich - versucht:

    wxFileInputStream *input= new wxFileInputStream(aIniPfad_Config);
    wxDataInputStream *store = new wxDataInputStream(*input);
    
    wxString line;
    
    line=store->ReadString();
    wxMessageBox(line.c_str(), _T("Was in line drinsteht:"),wxOK);
    

    Mit "wxConfig" und "wxFileConfig" habe ich auch schon experimentiert, aber dafür müsste ich ja auch die Struktur meiner ini-Datei umstellen.
    Aber wenn jemand ein brauchbares Beispiel hierfür hat, nur her damit.

    wxFileConfig *config = new wxFileConfig(aIniPfad_Config);
    wxArrayString aNames;
    
    // enumeration variables
    wxString str;
    long dummy;
    
    // first enum all entries
    bool bCont = config->GetFirstEntry(str, dummy);
    while ( bCont ) 
    {
    aNames.Add(str);
    bCont = config->GetNextEntry(str, dummy);
    }
    

    Wäre klasse, wenn ihr mir mit Beispielen helfen könntet!

    Gruß



  • Hi, guck dir mal http://wxforum.shadonet.com/viewtopic.php?t=21159&highlight=config und lade dir "confTest.zip" aus dem Thread, sollte hoffentlich helfen.

    Grüße



  • Danke für die Antwort!

    Das Beispiel aus der .zip-Datei ist das von den widgets selbst?! Das kannte ich schon, konnte damit aber leider nichts anfangen.
    Ich habe den dort im Forum angegebenen Code erstmal 1:1 kopiert, dann kommen aber direkt Compilermeldungen:

    C:[...].cpp|233|error: conversion from `const char[12]' to `const wxString' is ambiguous|
    

    Vielleicht liegt das auch an den verwendeten Programmen (- Code::Blocks 8.02 - wxWidgets 2.8.9 -)?
    Wegen des Fehlers habe ich an den entsprechenden Stellen "wxT(..)" eingefügt, dann ließ sich der Block kompilieren.
    Allerdings funktionierte das weiterhin nicht wie ich wollte.
    Ich habe den Konstruktor noch angepasst, da meine .ini-Datei direkt neben der .exe liegt, und ich den Pfad schon vorher ermittelt habe.
    Das war dann die Lösung für mein Problem.

    int posx = 50, posy = 50;
    int sizew = 500, sizeh = 280;
    
    // originale Zeile aus dem Beispiel
    //wxFileConfig* configFile = new wxFileConfig(wxT(""),wxT(""),wxT("Proramm_Config.ini"),wxT(""),wxCONFIG_USE_RELATIVE_PATH);
    
    // mein angepasster Konstruktor
    wxFileConfig* configFile = new wxFileConfig(wxT(""),wxT(""),aIniPfad_Config,wxT(""),wxCONFIG_USE_LOCAL_FILE,wxConvISO8859_1);
    
    if (configFile->GetNumberOfGroups() == 0 && configFile->GetNumberOfEntries() == 0) 
    {
    	configFile->Write(wxT("/Position/X"), posx);
    	configFile->Write(wxT("/Position/Y"), posy);
    	configFile->Write(wxT("/Size/W"), sizew);
    	configFile->Write(wxT("/Size/H"), sizeh);
    	configFile->Flush();
    }
    

    Vielen Dank für die Hilfe!

    Gruß


Anmelden zum Antworten