teile einer "*.ini" auslesen?



  • ok ich versuche jetzt erst mal das einlesen und schreiben der namen so umzubauen das die section selber im dropdown dargestellt wird wobei das etwas dauern kann da ich noch nich all zu lang mit MFC arbeite.
    Ich melde mich aber sobald etwas nich ganz klar ist.

    Danke euch beiden erst mal für die hilfe (brauch sicher noch mal welche :-))

    MfG Nico



  • habe jetzt doch noch ein prob ich bekomme das jetzt nich hin das die Section direkt auslesen und in die Dropdownlist schreiben kann.
    Kann mir da mal noch einer bitte helfen?
    Danke schon mal

    MfG Nico



  • Hi !

    Wenn du willst kann ich dir meine INI Class zuschicken.
    Mail mir wenn du Interesse hast ! johannes.leimbach@gmx.de



  • Die Sektionen die Du zurück bekommst sind durch Nullzeichen getrennt.
    Das ende wird durch ein doppeltes Nullzeichen getrennt.

    Erfrage mal die Ini Klasse (wäre für alle mal interesannt). Ansonsten poste ich Dir morgen mal ne Beispielroutine für das Auslesen der Sektionen in einen CStringArray

    Micha



  • @Knuddlbaer
    Das wäre echt super da ich jetzt schon die ganze zeit versucht habe das aus zu lesen doch bekomme es nicht wirklich hin.



  • Auszug einer Klasse

    void KBIni::getSektionNames(CStringArray & t)
    {
        char * temp = new char[65535]; // Speicher allokieren wo das zeugs reinpasst
        char * ptrTemp = temp; // Hilfszeiger
        GetPrivateProfileString(NULL,NULL,NULL,temp,65535,IniName); // Alle Sektionsnamen auslesen
    
        while(*ptrTemp != '\0' && *(ptrTemp+1) != '\0') // Und solange was machen bis doppel '\0' auftritt
        {
            t.Add(ptrTemp); // Den Eintrag speichern
            while(*ptrTemp != '\0') // Bis zur \0 laufen
                ptrTemp++;
            if(*(ptrTemp+1) == '\0') // Prüfen ob das folge Zeichen auf \0
                break;           // break damit while bedin. passt
    
            ptrTemp++;               // Ansonsten hinter das \0 setzen
        }
    
        delete[] temp;                   // Hilfsspeicher Löschen
    }
    

    Frage an die MFC Freaks:
    Ich hab da immer das Problem das ich nicht weiß was in der Ini auf mich zu kommt. Und jedesmal 65k zu Reservieren is doof, vorallem was wenn die Ini riesig ist und das nicht passt ?!

    (Vermiss die Klassen vom Borland grml)

    Genauso gehts übrigens auf mit den KeyNamen. Da musst Du eine Sektion Definieren. Der Rest ist identisch.

    [ Dieser Beitrag wurde am 25.09.2002 um 10:09 Uhr von Knuddlbaer editiert. ]



  • Korrektur:

    while(*ptrTemp-1 != '\0' && *(ptrTemp) != '\0')
        {
            SectionNames.AddTail(ptrTemp);
            while(*ptrTemp != '\0')
                ptrTemp++;      
    
            ptrTemp++;
        }
    

    Sonst werden Sektionen [1] falsch behandelt und das ende zu früh "erkannt"



  • @Knuddlbaer
    Ich bin erlich und gebe zu das ich deinen Code nicht verstehe.
    Aber mal ne frage kannich das nicht auch so machen das ich das ini-file umbaue das es ungefähr so aussieht:

    [AIRCRAFT1]
    ATR-72,243,8643,375
    [AIRCRAFT2]
    B747,426,985,9874,523

    usw.
    und das dann so auslese:

    CString c;
    Cstring t;
    t = c.Mid (0,c.Find('@');

    wobei das "@" die kommas ersetzt?



  • Brauchst Du ja auch nicht, setze ihn als Blackbox ein.

    Ja Du kannst auch das Fileformat ändern, Du musst nur die passenden Routinen dafür bereit stellen.



  • Also ich möchte euch allen erst mal danken für die viele hilfe und habe es jetzt hin bekommen. Zwar nicht so wie ihr das hier so gemacht habt aber ich denke das liegt daran das ich halt noch ziemlich neu bin in MFC.
    Wenn der Mode möchte kann ich ja meinen lösungsweg mal hier posten damit anfänger wie ich einen lösungsweg haben.
    Sicher habe ich nicht gerade die lösung mit dem kleinsten Code gewählt aber es geht *freu* und es ist auch nicht zu viel Code.

    MfG Nico und noch mal danke an alle!!!!


Anmelden zum Antworten