Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > Как слепить строку в зависимости от даты?


Автор: kulikoff 22.8.2006, 19:23
Такая ситуация: мне необходимо, чтоб в зависимости от введенной пользователем даты (объект sDateTime) формировалось число по следующему алгоритму:
1. Если дата находится между временными рамками '21.XX.ZZZZ' и '20.YY.ZZZZ' (т.е., скажем между 21.07.2006 и 20.08.2006) включительно, то мне необходимо, чтоб переменной а типа integer было присвоено значение а=200607
2. Если дата больше '20.YY.ZZZZ' (т.е., например 24.08.2006), то а=200608
Ну и, чтоб привязка стояла к текущей системной дате... 
Помогите реализовать это или оправьте, где можно почитать, про то, как с этим быть

Автор: Albinos_x 22.8.2006, 20:17
к примеру:
Код

var
   D1,D2,D:TDate;
   A:Integer;
...

D1:=StrToDate('21.07.2006');
D2:=StrToDate('20.08.2006');
D:=Date;
if (D>=D1) and (D<=D2) then
   A:=200607
   else
   if D>D2 then
      A:=200608;

Автор: kulikoff 22.8.2006, 21:17
 а как написать, если наступит следующий месяц? Т.е. вводимая дата должна будет проверяться в условиях, где месяц изменится на +1 и как написать то, что переменная А должна стать равной также на +1? И переход в следующий год.... У меня с этим основная загвоздка....

Автор: Matematik 22.8.2006, 21:29
год*100+месяц ?

Автор: Albinos_x 22.8.2006, 21:42
Цитата(kulikoff @  22.8.2006,  21:17 Найти цитируемый пост)
а как написать, если наступит следующий месяц?

Приблизительно так:
Код

var    
   D1,D2,D:TDate;    
   A:Integer;
   Dey,Mon,Yar:Integer;
   Dey1,Mon1,Yar1:Integer;    
...    
D1:=StrToDate('21.07.2006');    
D2:=StrToDate('20.08.2006');    
D:=Date;    
if (D>=D1) and (D<=D2) then    
   A:=200607    
   else    
   begin
   if D>D2 then    
      A:=200608
      else         // если текущая дата больше установленной
      begin
      DecodeDate(D,Dey,Mon,Yar);
      A:=(Yar*100)+Mon;
      end;
   end;


хотя в приведённых условия проще сделать так:
Код

var    
   D:TDate;    
   A:Integer;
....
D:=Date;
DecodeDate(D,Dey,Mon,Yar);
A:=(Yar*100)+Mon;

Автор: kulikoff 23.8.2006, 15:34
Спасибо большое!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)