Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2016, 20:22   #11
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Ну не знаю, будет ли тут тебе понятно? Но это блок проверок на совпадение дат и времени. С Делфии на Си могу переводить. В обратную сторону - увы.
Код:
// Функция проверки базы данных. Вызывается из FormCreate и Timer1Timer
void __fastcall TFormHome::SearchMatches()
{
TIniFile *reminder = new TIniFile(ExtractFilePath(Application->ExeName) + "Reminder.txt");
TStringList * sect = new TStringList;
sect->Sorted = false;
SFile sfile;// Значения ключей в секции
reminder->ReadSections(sect);// Список имён секций
SDateTime sdate_time = ParseDateTime(Now());// Декодируем текущую дату и время
TDateTime cur_date(Now());
TDate current_date = cur_date.CurrentDate();
AnsiString section;
for(int sec=0; sec < sect->Count; sec++)
{
  section = sect->Strings[sec];
  sfile = FillingStructure(section);// Читаем очередную секцию
  if(StrToInt(section) != 3 || StrToInt(section) != 4)
    if(sfile.last_tour == current_date) continue;// Пропуск если дата в секции совпадает с стекущей
  if(!sfile.active)// Пропуск, если секция активна
    switch(sfile.period)
    {
      case 0:// Один раз
               if(AnsiDate(sfile.begin_date) > current_date) break;// Проверка даты
      case 1:{// Ежедневно
               if(sfile.time <= sdate_time.time || sfile.time < 0)// Проверка времени
                 reminder->WriteBool(section, "active", true);
               break;
             }
      case 2:{// Еженедельно
               for(int i=1; i <= 7; i++)// Проверяем наличие установленного дня
               {
                 if(sfile.day_week.IsDelimiter("1", i))// День найден
                 {
                   if(sfile.time <= sdate_time.time)// Проверка времени
                   {
                     reminder->WriteBool(section, "active", true);
                     break;
                   }  
                 }
               }
               break;
             }
      case 3:// Ежемесячно
      case 4:{// Ежегодно
               TDate begin_date = AnsiDate(sfile.begin_date);
               TDate end_date = AnsiDate(sfile.end_date);
               if((current_date >= begin_date &&  current_date <= end_date) &&
                  (sfile.last_tour < begin_date || sfile.last_tour > end_date))
               {
                 reminder->WriteBool(section, "active", true);
               }
               break;
             }
      case 5:{// Опред. день года
               AnsiString tmp = "__." + IntToStr(sdate_time.month) + ".__";
               if(sfile.begin_date == tmp)// Совпал ли месяц?
               {
                 if(sfile.day == int((sdate_time.number-1)/7))// Число
                 {
                   if(sfile.day_week.AnsiPos("1")-1 == sdate_time.day)
                   {
                     reminder->WriteBool(section, "active", true);
                   }
                 }
               }
               break;
             }
    }
}
delete sect;
delete reminder;
}
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 20.04.2016, 00:20   #12
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

готовую прогу с исходниками подарить?

http://programmersforum.ru/showpost....23&postcount=6
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...

Последний раз редактировалось min@y™; 20.04.2016 в 00:22.
min@y™ вне форума Ответить с цитированием
Старый 20.04.2016, 01:02   #13
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,543
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
готовую прогу с исходниками подарить?
Легко. Она "для себя" написана. Экзешник, могу прям сейчас выложить. Исходники большие, да и не к чему их сюда. Если интересно, могу по-скайпу скинуть.
Вложения
Тип файла: rar Reminder.rar (374.8 Кб, 7 просмотров)
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 20.04.2016 в 01:08.
Smitt&Wesson вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание прикладной программы (Pascal/Delphi) v0velo Помощь студентам 3 29.11.2014 01:56
Delphi или Pascal создание программы для расчета стоимости тура Мария_1990 Помощь студентам 3 28.01.2014 12:19
создание программы в Pascal Александр Волобуев Паскаль, Turbo Pascal, PascalABC.NET 7 26.12.2010 19:29
Создание классов в Pascal lara-lara Помощь студентам 10 28.10.2010 20:04
Создание меню в Pascal Real7 Помощь студентам 3 20.12.2009 16:28