Fettes Prob mit CTime
-
Guten Morgen,
hab vor die zeilen meines listviews farbig zu zeichnen in abhängigkeit einer
bedingung, eines datum, welches in spalte 5 steht. das datum hat das format
dd.mm.yy. das zerlege ich dann und füttere den standard-konstruktor von ctime damit. in mHeute steht das aktuelle datum. dann vergleich von akt. datum und datum aus der liste.
zerlegung, aktuelles datum ist def. korrekt. auch die erhaltenen sec seit 1970 sind abs. plausibel.
nur irgendwas stimmt mit dem jahr nicht! die list wird anfangs korrekt gefärbt und dann beim scrollen kommt: 'Expression nYear >= 1900'. ausgelöst durch:
ASSERT(nYear >= 1900);
atm.tm_year = nYear - 1900; im ctime konstruktor.
das datum an der stelle ist kein besonderes: '13.05.2013'
schreib ich hier: CTime ablauf(2013, iMonth, iDay, 0, 0, 0); also ein festes
jahr rein, kommt der fehler nicht. ist aber nat. nicht sinn der sache.kann mir das seit 3 stunden nicht erklären
für hilfe wäre ich wirklich dankbar.hier die customdraw-methode.
gruss
der ferngesteuertevoid CVerWizView::OnNMCustomdraw(NMHDR *pNMHDR, LRESULT *pResult) { LPNMLVCUSTOMDRAW lplvcd = (LPNMLVCUSTOMDRAW)pNMHDR; CListCtrl &cList = GetListCtrl(); switch(lplvcd->nmcd.dwDrawStage) { case CDDS_PREPAINT: *pResult = CDRF_NOTIFYITEMDRAW; break; case CDDS_ITEMPREPAINT: *pResult = CDRF_DODEFAULT; //Datum holen CString date_range = cList.GetItemText(lplvcd->nmcd.dwItemSpec, 5); //zerlegen date_range.Remove('.'); CString year = date_range.Right(4); int iYear = atoi( year ); CString month = date_range.Mid(2,2); if(month.Left(1) == '0') month.Remove('0'); int iMonth = atoi( month ); CString day = date_range.Left(2); if(day.Left(1) == '0') day.Remove('0'); int iDay = atoi( day ); CTime ablauf(iYear, iMonth, iDay, 0, 0, 0); //<- hier passierts wohl if(ablauf > mHeute) //mHeute = CTime::GetCurrentTime(); def. in InitUpd. { lplvcd->clrText = RGB(255, 0, 0); *pResult = CDRF_NEWFONT; } } }
-
Auf was für ein iYear kommt er denn?
-
Hallo peterchen,
scheint, als ob du für mich exklusiv zuständig bis.
sonst redet ja keiner mit mir
vielen dank.habs heute morgen um 4 Uhr !!! noch rausgefunden.
ein ochse von user hat einen vertragsablauf mit datum 0014-05-13 in die datenbank eingetragen. damit hatte ich nicht gerechnet. eigentlich sollte unser webfuzzi die felder validieren, damit sowas nicht eingetragen wird.
(hab den einlauf schon vorbereitet)
nachdem ich das auf 2014 geändert hab, kommt der fehler auch nicht mehr.
schönen sonntag
gruss
der ferngesteuerte