CListBox Strings löschen ???



  • Hi Leute,

    ich hab eine Listbox die ich je nach Programmzusatnd unterschiedlich mit Strings befülle. Soweit so gut doch das löschen der alten Strings funktioniert nicht sauber. Er löscht mir in den Löschschleife nur jeden zweiten Eintrag 😡

    int i_cur_index_count;
    
    i_cur_index_count = m_files.GetCount();             
    if(i_cur_index_count > 0)                        
    {               
               for(int i_zaehler = 0; i_zaehler < i_cur_index_count ; i_zaehler++)
            {
                m_files.DeleteString(i_zaehler);
            }
        }
    

    m_files ist eine Membervariable vom Typ CListBox die mit dem Klassenassi. erstellt wurde.
    Ich prüfe halt ob die Listbox befüllt ist und wenn ja will ich die Einträge löschen (dachte ich zumindestens) 😮
    Aber leider löscht er mir nur genau jeden zweiten Eintrag angefangen beim ersten (also den 1,3,5,....).
    Hat jemand ne Idee warum 😕 ? Im Debug zählt die Schleife sauber hoch



  • ResetContent()

    Wofür gibts die MSDN ?



  • Hi,

    lösch immer den "nullten" Eintrag.

    m_files.DeleteString(0);

    oder -> siehe ReneG 🙂

    Legolas



  • fast schon "klassischer" Fehler 😉
    DeleteString(0) löscht Element 0 aus der Liste. Nun werden die Elemente verschoben: Element 1 wird zu Element 0, Element 2 zu 1 usw.
    Nun löscht DeleteString(1) das _jetzige_ Element 1 - aber das ursprüngliche Element 1 steht jetzt an Position 0, gelöscht wird "Ursprungs"-Element 2 usw...

    Ich hoffe, es wird klar, was ich meine 😉



  • Hi Leute,

    ja eure Erklärungen sind logisch aber ich hätte mir wohl einen Wolf gesucht und währe nicht auf das Ergebnis gekommen (ist halt nicht mein Jahrtausend 🙂 ). Ich arbeite halt wenig mit Listboxen (werde mich bessern 😃 ).
    Nochmal danke an alle die gepostet haben. 🙂 🙂 🙂


Anmelden zum Antworten