Главная » Free Pascal » Упаковка, замена и распаковка составляющих даты и времени Free Pascal

0

Группу подпрограмм, обеспечивающих упаковку отдельных компонентов и групп компонентов в данные типа TDateTime, составляют функции, чьи имена на- чинаются со слова Encode (табл. 14.4). По исходной информации они вычисляют все недостающие компоненты даты и времени, а затем преобразуют их в значение типа TDateTime. Все аргументы функций упаковки должны иметь тип Word.

Таблица 14.4

Формат обращения

Пояснение

dt:=EncodeDateTime(Year,Month,Day, Hour,Minute,Second,MilliSecond);

Упаковка заданных компонентов даты и времени

dt:=EncodeDateMonthWeek(Year,Month, WeekOfMonth,DayOfWeek);

Исходные данные — год, месяц, неделя месяца, день недели

dt:=EncodeDateDay(Year,DayOfYear);

Исходные данные — год, порядковый день года

dt:=Encode(Year,WeekOfYear,DayOfWeek);

Исходные данные — год, неделя года, день недели

dt:=EncodeDayOfWeekMonth(Year,Month, NthDayOfWeek,DayOfWeek);

Исходные данные — год, месяц, порядковый номер дня недели в месяце, день недели

Указанный в этой таблице параметр NthDayOfWeek означает последовательный номер в месяце дня недели DayOfWeek. Например, вторая (NthDayOfWeek=2) среда (DayOfWeek=3) месяца.

Еще пять функций с такими же названиями, которым предшествует префикс Try (попробуй), возвращают логические значения True или False. Первый резуль- тат свидетельствует о том, что значения всех аргументов принадлежат допустимым диапазонам. Второй результат говорит о наличии ошибок в исходных данных. Анализ результата может позволить программе предпринять какие-то меры по ис-

правлению  ситуации. Ошибки в данных при упаковке генерируют исключение, приводящее к аварийному завершению программы.

С помощью функций, имена которых начинаются со слова Recode (табл. 14.5), вы можете в существующем значении типа TDateTime осуществить замены каждой составляющей даты-аргумента или группы ее компонентов на значения, заданные вторым и последующими аргументами. Все замещающие компоненты должны быть типа Word.

Таблица 14.5

Формат обращения

Пояснение

dt2:=RecodeDateTime(dt1,Year,Month,Day, Hour,Minute,Second,MilliSecond);

Замена всех компонентов в значении dt1

dt2:=RecodeDate(dt1,Year,Month,Day);

Замена года, месяца и дня

dt2:=RecodeTime(dt1,Hour,Minute, Second,MilliSecond);

Замена компонентов времени

dt2:=RecodeYear(dt1,new_Year);

Замена года

dt2:=RecodeMonth(dt1,new_Month);

Замена месяца

dt2:=RecodeDay(dt1, new_Day);

Замена дня

dt2:=RecodeHour(dt1,new_Hour);

Замена часов

dt2:=RecodeMinute(dt1,new_Min);

Замена минут

dt2:=RecodeSecond(dt1,new_Sec);

Замена секунд

dt2:=RecodeMilliSecond(dt1,new_Mlsec);

Замена миллисекунд

По аналогии с группой функций упаковки в состав модуля DateUtils входят пять процедур распаковки. Их имена начинаются со слова Decode, входным аргу- ментом является значение даты и времени dt в формате TDateTime, а выходными параметрами — имена соответствующих переменных типа Word. В табл. 14.6 до- полнительно включены семь функций по извлечению каждой составляющей даты и времени.

Таблица 14.6

Формат вызова

Пояснение

DecodeDateDay(dt, Year,DayOfYear);

Извлечение года и порядкового дня в году

DecodeDateMonthWeek(dt, Year,Month,

WeekOfMonth,DayOfWeek);

Извлечение года, месяца, недели месяца и дня недели

DecodeDateTime(dt, Year,Month,Day, Hour,Minute,Second,MilliSecond);

Извлечение всех компонентов

Таблица 14.6 (окончание)

Формат вызова

Пояснение

Decode(dt, Year,WeekOfYear,DayOfWeek);

Извлечение года, номера недели в году и дня недели

DecodeDayOfWeekMonth(dt, Year,Month, NthDayOfWeek,DayOfWeek);

Извлечение года, месяца, количества повторений дня недели в месяце и дня недели

Year:= YearOf(dt)

Извлечение года

Month:= MonthOf(dt)

Извлечение месяца

Day:= DayOf(dt)

Извлечение дня месяца

Hour:= HourOf(dt)

Извлечение часов

Minute:= MinuteOf(dt)

Извлечение минут

Second:= SecondOf(dt)

Извлечение секунд

MilliSecond:= MillisecondOf(dt)

Извлечение миллисекунд

Источник: Кетков, Ю. Л., Свободное программное обеспечение. FREE PASCAL для студентов и школьников, Ю. Л. Кетков, А. Ю. Кетков. — СПб.: БХВ-Петербург, 2011. — 384 с.: ил. + CD-ROM — (ИиИКТ)

По теме:

  • Комментарии