Arrays nutzen?



  • Hallo,

    ich muss in meinem neuen Beispielprojekt (bin in der Lernphase) nun
    häufiger ini-Werte auslesen.

    Bislang habe ich den Code immer neu hinkopiert, das geht aber sicher auch einfacher.
    Ich bin mir nur nicht sicher wie.

    Das würde ich immer wieder kopieren mit neuen Variablen:

    char *pBuf = new char[300];
        CString returnstring;
        GetPrivateProfileString("Sektion1","1","error",pBuf,300,"c:\\log.ini");
        returnstring.Format("%s",pBuf);
        delete []pBuf;
    

    Ich dachte an diese Arrays, aber würde es denn so überhaupt Sinn machen?

    char *pBuf = new char[300];
    CString returnstring[20];
    CString wertzahl[20];
    
    for(int x=0;x<=20;x++)
    {
        GetPrivateProfileString("Sektion1",wertzahl[x],"error",pBuf,300,"c:\\log.ini");
        returnstring[x].Format("%s",pBuf);
    }
        delete []pBuf;
    CString xyz;
    xyz=returnstring[10];
    MessageBox(xyz,"Wert aus Array");
    


  • Erstmal: Je nach Anwendung kann das durchaus Sinn machen, allerdings solltest du nicht über das Array-Ende hinausschreiben (oder gleich dynamisch erweiterbare Container verwenden).

    Zweitens: Das Gebastel mit dem char* sieht ja übel aus - hol dir doch direkt den richtigen Buffer per GetBuffer():

    CString returnstring;
    GetPrivateProfileString("Sektion1","1","error",returnstring.GetBuffer(300),300,"c:\\log.ini");
    returnstring.ReleaseBuffer();
    


  • Hallo CStoll,

    danke für deinen Tipp.

    Sag mal wie mache ich das richtig, damit ich den 2ten Parameter variabel
    bzw. für ein Array anlege?

    GetPrivateProfileString("Sektion1","Wert1","error",pBuf,300,"c:\\log.ini");
    

    Nun soll statt Wert1 laufend hochgezählt werden ("Wert2","Wert3" etc.).
    Ich fürchte so einfach wie ich es mir vorstellte ist es dann doch nicht.



  • vom prinzip her etwa so:

    for (int i=0; i<10; i++)
    {
       CString wert; 
       wert.Format ("Wert%d", i);
       GetPrivateProfileString("Sektion1",wert,"error",pBuf,300,"c:\\log.ini");
    }
    

    zählt von 'Wert0' bis 'Wert9'
    🙂


Anmelden zum Antworten