CListBox macht Ärger



  • Ich habe in einem Dialog eine CListBox. Folgende Fälle/Fehler treten auf:

    1. Sie ist leer und man klickt rein: OK.
    2. Sie enthält einen/mehrere Eintrage.
    →2a. Ich klicke einen Eintrag an: OK.
    →2b. Ich klicke auf freie Fläche: Fehler!
    →2c. Ich klicke auf freie Fläche nachdem ich zuvor Eintrag angeklickt habe: OK.

    Die Fehlermeldung kommt vom Debugger und sagt mir der Fehler hat was mit der Expression "nLength>=0" zu tun, ich schätze mal das bezieht sich auf die ListBox.



  • Kann es sein, dass der Fehler ein ASSERT ist?
    Wie sieht die Funktion aus, die du aufrufst, wenn auf die Liste geklickt wird?



  • void CDlgConnection::OnLbnSelchangeIpList()
    {
    	CString tmpIP;
    	mListIP.GetText(mListIP.GetCurSel(), tmpIP);
    	SetDlgItemText(IDC_IP_ADDRESSE, tmpIP);
    }
    


  • Welchen Wert hat mListIP.GetCurSel() im Fehlerfall?



  • der fehler entsteht wenn du das letzte element in der liste anklicken willst richtig??!!

    der fehler ist hier

    mListIP.GetText(mListIP.GetCurSel(), tmpIP);
    

    richtig wäre

    mListIP.GetText(mListIP.GetCurSel()[b]-1[/b], tmpIP);
    

    mListIP.GetCurSel() liefert dir wenn du auf das erste element klickst eine 1 zurück wir wissen aber das eine Liste eine Array ist und diese immer mit 0 beginn 😉

    folglich springt er mit mListIP.GetCurSel() beim letzten element hinter die Array und das veruhrsacht den fehler 😉



  • Was ist, wenn nix ausgewählt ist, GetCurSel somit LB_ERR bzw. -1 zurück gibt ?

    [edit] ...mal davon abgesehen, das GetCurSel den richtigen Index zurück gibt und nicht 1 beim ersten Element... [/edit]



  • LowFly schrieb:

    mListIP.GetCurSel() liefert dir wenn du auf das erste element klickst eine 1 zurück wir wissen aber das eine Liste eine Array ist und diese immer mit 0 beginn 😉

    Echt jetzt? Das ist mir völlig neu. 😮
    Ich arbeite dummerweise extrem selten mit Listboxen und kanns grade nicht testen, aber: Bei CComboBox und CListCtrl hat die erste Zeile den Index 0.



  • @LowFly:
    Sorry, aber was du erzählst ist falsch.

    @estartu&isabeau:
    Richtig, ich habe versäumt, den Fehlerfall zu behandeln, danke!



  • stimmt f... das war bei
    GetItemCount bzw. GetCount so 🙄


Anmelden zum Antworten