Access Violation bei ListView



  • Hallo!
    Hab ein kleines Problem.

    Ich möchte aus einer ListView ein SubItem in eine Memo Komponente ausgeben.

    Da kriege ich aber immer eine Accessviolation.

    Das ganze sieht bei mir so aus:

    Anlegen des Items

    TListItem *x=F_History->ListView1->Items->Add();
    x->Caption = TimeToStr(Now());
    x->SubItems->Add(dynamic_cast<TComboBox*>(F_Haupt->Components[i])->Text); x->SubItems->Add(dynamic_cast<TComboBox*>(F_Haupt->Components[i])->Text);
    x->SubItems->Add(Memo1->Lines->Text);
    
    Memo1->Lines->Add(ListView1->Selected->SubItems->Strings[2]);
    

    Hier kommt die Accessviolation!

    Brauche schnell Hilfe!

    Danke



  • kann es sein, dass zum Zeitpunkt des Aufrufs gar kein Eintrag im ListView markiert ist?



  • Ich bin mir nicht ganz sicher, aber beginnt Strings[] nicht bei 0?
    Demnach würde dann der Eintrag Strings[2] garnicht existieren sondern Strings[0] und Strings[1].



  • Ich lege ja im ersten Teil des Quellcodes ein Item an und weise 3 SubItems zu!
    Das hat der irgendwie oben in eine Zeile geschrieben 😉

    Ein Eintrag ist markiert weil dieser Befehl ist im OnClick-Ereigniss der ListView.

    Wenn ich dann einen EIntrag anklicke soll diese aufgerufen werden.



  • Hallo,

    es muss nicht zwangsläufig ein Item selektiert sein wenn der OnClick ausgelöst wird. Vorsichtshalber solltest du vorher noch abfragen, ob wirklich ein Item ausgewählt ist.

    LG, Micha



  • Ja abeer ich hatte das Item ja vorher angeklickt.

    Ahhh jetzt kommt mir grade eine Idee.

    Kann es sein dass der PC wenn er noch kein Item selektiert hat, und ich auf eins klicke, dass er dann vorher die OnCLick auslöst und dann erst selektiert?

    Ich probiere es nachher mal mit OnDblClick!



  • Hallo

    Hör auf rumzuraten und benutz den Debugger um die genaue Stelle einzugrenzen (Dazu must du eventuell deinen Code weiter auftrennen).

    bis bald
    akari



  • Hatte vergessen, RowSelect auf true zu stellen


Anmelden zum Antworten