ListCtrl nach Datum sortieren



  • Hallo,

    ich habe ein Problem, und zwar möchte ich gerne ein CListCtrl auch nach Datum sortieren können. Es will aber nicht funzen. Hier ist ein Ausschnitt aus meinem Code die ich von Codeguru übernohmen habe und jetzt anpassen will.

    //hier ist der Aufruf meine SortKlase
       CSortClass csc(pList,y/*pNMListView->iSubItem*/, bAscending);
       csc.Sort(bAsc);
    
    //hier der Konstruktor
    for (int t = 0; t < max; t++)
    {
            dw = pWnd->GetItemData(t);
       txt = pWnd->GetItemText(t, iCol);
       pWnd->SetItemData(t, (DWORD) new CSortItemDate(dw, txt.Trim()));
    }
    
    //Funktion SortItemDate
    CSortClass::CSortItemDate::CSortItemDate(const DWORD _dw, const CString & _txt)
    {
       dw = _dw;
       //_txt = _txt.Trim();
            COleDateTime dt(atoi(_txt.Mid(6,4)),atoi(_txt.Mid(3,2)),atoi 
                           (_txt.Left2)),0,0,0);
       oleDt = dt;
    }
    
    //Vergleich
    int CALLBACK CSortClass::CompareAscD(LPARAM lParam1, LPARAM lParam2, LPARAM lParamSort)
    {
       CSortItemDate * d1 = (CSortItemDate *) lParam1;
       CSortItemDate * d2 = (CSortItemDate *) lParam2;
       ASSERT(d1 && d2); //HIER PASSIERT MANCHMAL EIN SPEICHERVERLETZUNG
    
       if (d1->oleDt == d2->oleDt) return 0;
    
       return d1 < d2 ? 1 : -1;
    }
    
    //Aufruf zum sortieren (die Sort Funktion
    pWnd->SortItems(CompareAscD, 0L);
    

    ich danke in Voraus für jede Hilfestellung.

    [ Dieser Beitrag wurde am 06.12.2002 um 10:55 Uhr von BG editiert. ]



  • return d1->oleDt < d2->oleDt ? 1 : -1;

    Bisher vergleichst Du nur die Zeiger.



  • danke danke danke. du hast je sooooooooooooooooooooo recht 😃 😃 😃 😃


Anmelden zum Antworten