void MakeGaps(void) { uchar i; uint j; if (GetGapSize() == 0) { for (j=0; j<sizeof(mpbGaps); j++) mpbGaps[j] = 0; } else { GetGapDate(0); for (j=0; j<365; j++) mpbGaps[j] = tiGap.bSecond; for (i=0; i<GetGapSize(); i++) { GetGapDate(GetGapSize()-1-i); for (j=0; j<=GetDayIndexMD(tiGap.bMonth, tiGap.bDay); j++) mpbGaps[j] = tiGap.bSecond; } } }
// добавление нового излома в список и сортировка bool AddGap(void) { uchar i,j; uint k; // проверяем на наличие этого излома в списке for (i=0; i<GetGapSize(); i++) { GetGapDate(i); if ((tiGap.bMonth == tiT.bMonth) && (tiGap.bDay == tiT.bDay)) { // заменяем тип излома, не добавляя его в список SetGapDate(i); SaveCache(&chGaps); return(0); } } // записываем излом в конец списка tiGap = tiT; SetGapDate(ibX); // сортировка for(i=0; i<=GetGapSize(); i++) { for(j=0; j<=GetGapSize(); j++) { GetGapDate(i); k = GetDayIndexMD(tiGap.bMonth, tiGap.bDay); GetGapDate(j); if (k < GetDayIndexMD(tiGap.bMonth, tiGap.bDay)) { GetGapDate(i); time ti = tiGap; GetGapDate(j); SetGapDate(i); tiGap = ti; SetGapDate(j); } } } // увеличиваем размер списка SetGapSize(GetGapSize() + 1); SaveCache(&chGaps); return(1); }
void ShowGap(uchar ibGap) { if (GetGapSize() > 0) { GetGapDate(ibGap); sprintf(szLo,"%2u.%02u", tiGap.bDay, tiGap.bMonth); ShowGapName(tiGap.bSecond); sprintf(szHi+11,"%2u/%-2u", ibGap+1, GetGapSize()); } else ShowLo(szNoGaps); }
// удаление излома из списка void DelGap(void) { uchar i; // если удаляем не последний излом if (ibX < GetGapSize() - 1) { // сдвигаем последующие изломи вверх for (i=ibX; i<GetGapSize() - 1; i++) { GetGapDate(i + 1); SetGapDate(i); } } // иначе уменьшаем индекс текущего излома else if (ibX != 0) ibX--; // уменьшаем количество изломов if (GetGapSize() != 0) SetGapSize(GetGapSize() - 1); SaveCache(&chGaps); }