IncYear — Функция Delphi

Содержание

Функции и процедуры Delphi. Справочник.

Функция IsLeapYear( Year: Word ): Boolean;

Описание
Функция определяет, является ли високосным год, указанный в параметре Year. Если год високосный, то функция возвращает True, а иначе — False.

Пример
var
S: string;
Year,Month,Day: Word;
begin
DecodeDate( Date, Year, Month, Day);
If IsLeapYear(Year) then S:= ‘високосный’
else S:=’не високосный’;
MessageDlg( ‘Текущий год — ‘+ S, mtInformation, [mbOk], 0);
end;

Как увеличить дату из таблицы на три года?

30.03.2012, 06:51

Как увеличить дату на 10 дней?
Я начинающий программист, это наброски на курсовую, без понятия как корректно и оригинально ее.

Как увеличить дату на единицу?
Не заботясь о том. не будет ли это 32-е число?

Как прибавить три года к текущей дате
пишу что-то вроде этого date(«Y-m-d»,time()-(365*3*(24*60*60)));, но получается что-то не то.

Увеличить дату в БД на n дней
Есть дата, записанная в бд, нужно прибавить к ней n дней. Делаю так: $res2=mysql_query(«SELECT *.

30.03.2012, 16:15 2

Добавлено через 1 минуту
DateUtils это не процедура, а отдельный модуль, который подключается в USES

Добавлено через 1 час 31 минуту

Время по математике в Delphi

У меня есть довольно необычная проблема (для меня). Я пишу приложение, которое позволит пользователю изменять свое системное время вперед или назад либо явной датой (изменить дату 6/3/1955) или приращение с помощью кнопок (идти вперед 1 месяц).

Я пишу это, чтобы помочь некоторым из моих пользователей проверить некоторое программное обеспечение, которое требует прыжков, как это для того, чтобы смоделировать реальное использование биллинговой системы мира.

Изменение времени в Delphi, конечно, очень легко:

Но я не уверен, если Delphi (2006) имеет какой-либо встроенный в помощниках для даты математики, которая является одной из моих наименее любимых вещей :)

Любые предложения по лучшим способом справиться с этим? Я бы предпочел остаться родным как WinAPI DateTime звонки сосать.

Как отметил Gabr и mliesen, есть взгляд на DateUtils и SysUtils единиц, полезные функции включают в себя.

  • IncDay — Добавить или вычесть количество дней.
  • IncMonth — Добавить или вычесть число месяцев.
  • IncWeek — Добавить или вычесть несколько недель.
  • IncYear — Добавить или вычесть несколько лет.
  • EncodeDate — Возвращает значение TDateTime из года, месяца и дня Params.

Существует множество помощников в DateUtils блоке.

Что вы хотите, чтобы произошло, если день текущего месяца не существует в вашем будущем месяце? Скажем, 31 января + 1 месяц? У вас есть такая же проблема, если вы увеличивать год и начальная дата 29 февраля на високосный год. Так что не может быть универсальным IncMonth или функция IncYear, которая будет работать на последова- все даты.

Для тех , кто заинтересован, я от всей души рекомендую статью Джулиана Bucknall в о сложностях, которые присущи этому виду расчета о том , как рассчитать количество месяцев и дней между двумя датами.

Ниже приводятся только функции общего приращения даты возможно, не ввести anomolies в общие датах математики. Но это достигается только перекладывая ответственность обратно на программиста, который предположительно имеет точные требования конкретного применения, он / она программирования.

IncDay — Добавить или вычесть количество дней.
IncWeek — добавить или вычесть несколько недель.

Но если вы должны использовать встроенные функции, то по крайней мере, быть уверенным, что они делают то, что вы хотите их сделать. Посмотрите на DateUtils и SysUtils единиц. Имея исходный код этих функций является одним из самых привлекательных аспектов Delphi. Сказав, что, вот полный список встроенных функций:

IncDay — Добавить или вычесть количество дней.
IncWeek — добавить или вычесть несколько недель.
IncMonth — Добавить или вычесть число месяцев.
IncYear — Добавить или вычесть несколько лет.

Что касается второй части вашего вопроса, как установить дату & время системы с использованием TDateTime, следующий бессовестно украден код из другого поста будет делать эту работу:

Функции Delphi

Стандартные функции Delphi:

Для проведения всевозможных математических вычислений и многочисленных преобразований язык программирования Delphi содержит библиотеки стандартных процедур и функций. Давайте подробнее рассмотрим стандартные функции Delphi.

Между значением и именем функции существует зависимость. Поэтому всякая функция может быть представлена как операнд некоторого выражения (к примеру, в инструкции присваивания). Для возведения числа в n-ую степень достаточно записать

откуда ln — функция, вычисляющая натуральный логарифм числа exp(x), exp — функция, вычисляющая экспоненту в степени x, x — число, n-ую степень которого надо найти, а n — степень числа x. Каждая функция обладает следующими характеристиками: тип значений, тип параметров.

Должно существовать соответствие между типом переменной (ей присваивается определенное значение функции) и типом функции. И в то же время необходимо соответствие между типом фактического параметра данной функции (фактический параметр — это параметр, который указывается при обращении к функции) и типом формального параметра. В противном случае компилятором выводится сообщение об ошибке.

Математические функции Delphi:

Библиотеки языка Delphi включаются в себя и множество математических функций:

Величину угла при использовании тригонометрических функций необходимо выражать в радианах. Чтобы преобразовать угол из градусов в радианы, используйте следующую формулу:

где a выражает угол в градусах; 3.1415926 означает число pi. На месте константы 3.1415926 с дробной частью для достижения большей точности чаще всего пользуются стандартной именованной константой pi. Тогда выражения для угла в пересчете в радианы будет выглядеть следующим образом:

Функции преобразования Delphi:

Наиболее частое использование функций преобразования связано с инструкциями, которые обеспечивают ввод/вывод какой-либо информации. Например, для вывода значения переменной c типом real в поле вывода диалогового окна (компонент Label), нужно провести преобразование числа в строку символов, которая собственно изображает данное число. Это можно достичь, применяя функцию FloatToStr, которая заменяет значение выражения (оно указано как параметр функции) его строковым представлением.

Пример.

В приведенном примере значение переменной m будете выведено в поле Label. В таблице ниже Вам будут представлены основные функции преобразования Delphi:

Применение функций Delphi:

В любом выражении функция используется как операнд. В качестве ее параметра можно выбрать переменную, константу, выражение определенного типа данных.

Примеры.

Структура функции Delphi

Как организована инструкция функции в языке Delphi? В любом языке программирования на первом этапе описания функции указывается ее заголовок. Далее за заголовком программист описывает раздел объявления констант const (если таковы имеются), затем занимается описанием раздела объявления типов type, далее следует раздел объявления переменных var и, наконец, раздел инструкций.

В приведенном примере в заголовке функции вначале указывается зарезервированное слово function, а следом идет имя функции. Далее в скобках программист перечисляет список параметров, и вслед за ним, используя символ «:», указывает тип значения функции. В конце каждого заголовка стоит символ «;». После заголовка следуют раздел констант, раздел типов, раздел переменных. Внутри раздела инструкций кроме констант и переменных, описанных соответственно в разделах const и var, может находится переменная result.

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

Процедуры и функции RX_lib

Процедуры и функции RX_lib

Содержание материала

AppUtils unit:

AppBroadcast — Функция посылает сообщение Msg всем формам приложения.

FindForm — Функция перебирает формы приложения, проверяя для каждой из них, является ли она экземпляром класса FormClass

FindShowForm — Функция перебирает формы приложения, проверяя для каждой из них, является ли она экземпляром класса FormClass

GetDefaultIniName — Функция возвращает имя INI-файла «по умолчанию» для приложения.

GetDefaultIniRegKey — Функция возвращает имя ключа регистрационной базы данных Windows (Registry) «по умолчанию» для приложения

GetDefaultSection — Функция возвращает строку для указанной компоненты Component,

GetUniqueFileNameInDir — Возвращает уникальное для заданного каталога имя файла, InstantiateForm- функция создает экземпляр формы типа FormClass

ReadFormPlacement — Процедура ReadFormPlacement используется для восстановления формы

RestoreFormPlacement — Процедура RestoreFormPlacement используется для восстановл. формы

RestoreGridLayout — Восстанавливает из INI-файла ширины колонок компонент TCustomGrid

RestoreMDIChildren — Создает и показывает MDIChild-формы

SaveFormPlacement — Процедура используется для сохранения состояния формы

ShowDialog — Создание и модальное исполнение диалога

WriteFormPlacement — Процедура используется для сохранения состояния формы,

BdeUtils unit:

AsyncQrySupported — Функция возвращает True, если драйвер специфицированной базы данных Database поддерживает асинхронное выполнение запросов

CheckOpen — Функция служит для обрамления вызовов функций BDE API, открыв. курсоры

ConvertStringToLogicType — Процедура предназначена для конвертации строки Value в BDE,

CurrentRecordDeleted — Функция определяет, является ли текущая запись набора данных удаленной (помеченной как удаленная) или нет

DataSetFindValue — Функция пытается установить набор данных, переданный в качестве параметра DataSet, на первую от начала запись, удовлетворяющую заданному условию

DataSetPositionStr — Для драйверов DBase и Paradox функция возвращает строку, содержащую текущий номер записи и полное число записей в DataSet

DataSetRecNo — Функция возвращает номер текущей записи в DataSet.

DataSetShowDeleted — Процедура устанавливает режим показа удаленных записей в таблицах формата DBase.

DeleteRange — Удаление диапазона записей из таблицы.

ExecuteQuery — Процедура предназначена для выполнения SQL-запросов

ExportDataSet — Процедура служит для экспорта данных из таблицы БД или результата запроса Source в выходную таблицу DestTable.

FieldLogicMap — Функция возвращает для конкретного значения FldType получить для целочисленное значение, идентифицирующее логический тип данных BDE.

GetAliasPath — Функция возвращает физический путь для алиаса (псевдонима) BDE

GetBDEDirectory — Функция возвращает имя каталога, в котором установлены библиотеки BDE InitRSRun — Инициализация RUNTIME ReportSmith.

IsBookmarkStable — Return True, if specified DataSet supports stable bookmarks

PackTable — Процедура предназначена для «упаковки» таблиц формата DBase и Paradox

RestoreIndex — Восстанавливает свойство IndexFieldNames у Table

SetIndex -Устанавливает свойство IndexFieldNames у Table

SetToBookmark — Функция устанавливает ADataSet в позицию, соответствующую переданному значению ABookmark

TransActive — Функция определяет, имеет ли база данных Database активную транзакцию и в этом случае возвращает True, в противном случае результат — False.

BoxProcs unit:

BoxDragOver — Предполагается вызывать из обработчика события OnDragOver.

BoxMoveAllItems — Копирует все элементы SrcList в DstList, затем очищает SrcList.

BoxMoveFocusedItem — Предполагается использовать в обработчике события OnDragDrop.

BoxMoveSelectedItems — Перемещает выделенные элементы из SrcList в DstList

ClipIcon unit:

AssignClipboardIcon — Процедура заполняет иконку Icon данными из буфера обмена (Clipboard)

CreateIconFromClipboard — Функция создает объект класса TIcon, если буфер обмена (Clipboard) содержит данные в формате CF_ICON.

CreateRealSizeIcon — Функция создает иконку из объекта Icon класса TIcon

DrawRealSizeIcon — Функция рисует иконку Icon на устройстве Canvas,

GetIconSize — Процедура возвращает ширину и высоту иконки,

DateUtil unit:

CutTime — Устанавливает время в переданном аргументе ADate в значение 00:00:00:00.

DateDiff — Определяет разницу между датами, заданными Date1 и Date2 в днях, месяцах и годах.

DaysBetween — Вычисляет число дней между датами Date1 и Date2,

DaysInPeriod — Вычисляет число дней между датами Date1 и Date2

DefDateFormat — Функция возвращает строку формата даты по ShortDateFormat,

DefDateMask — Функция возвращает строку маски для ввода даты

GetDateOrder — Функция возвращает порядок расположения дня, месяца и года в формате даты,

IncDate — Увеличивает дату ADate на заданное количество дней, месяцев и лет, возвращая полученную дату как результат.

IncDay — Увеличивает дату на заданное количество дней, возвращая полученную датуIncHour

IncMinute — Увеличивает время на заданное количество минут, возвращая полученное время IncMonth

IncTime — Увеличивает время на заданное количество часов, минут, секи мс, возвращая время IncYear

IsLeapYear — Проверяет является ли заданный параметром AYear год високосным.

StrToDateDef — Функция преобразует строку в дату в соответствии с форматом ShortDateFormat

ValidDate — Функция определяет, представляет ли собой аргумент ADate действительное значение существующей даты.

Добавить комментарий

Не использовать не нормативную лексику.

Просьба писать ваши замечания, наблюдения и все остальное,
что поможет улучшить предоставляемую информацию на этом сайте.

ВСЕ КОММЕНТАРИИ МОДЕРИРУЮТСЯ ВРУЧНУЮ, ТАК ЧТО СПАМИТЬ БЕСПОЛЕЗНО!

Delphi: как измерить точное время выполнения операции?

Точное время измерения выполнения операции в Delphi может пригодится во многих случаях, начиная от самого простого — показать пользователю время, затраченное на выполнение длительной операции (здесь, кстати, высокая точность нужна редко) и, заканчивая, ситуациями, когда в целях оптимизации программы нам необходимо выявить в программе наиболее «узкие» места в которых программа «застревает» на длительный промежуток времени. В основном, последняя ситуация характерна при разработке программ, использующих и обрабатывающих большие массивы данных, когда скорость выполнения операций выходит, если не на первое, то на одно из первых мест в требованиях к приложению.
Есть несколько способов узнать время выполнения операций в Delphi и все эти способы, в принципе, рассмотрены как в Сети, так и моем блоге. Поэтому представленная ниже статья — это лишь объединение всех возможных способов измерения времени в Delphi и опытный Delphi-программист здесь врядли встретит что-то новое для себя.

Способ №1 — самый простой. Используем функцию Now()

Самый простейший и наименее точный способ измерить время, затраченное на выполнение какой-либо операции в Delphi — воспользоваться функцией Now() из модуля System.SysUtils.

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

Илон Маск рекомендует:  Что такое код unhookwindowshook

Вполне вероятно, что у вас может возникнуть резонный вопрос: почему я использовал в примере SecondsBetween(), а не, например, MilliSecondsBetween() для большей точности? Сделал я это, опираясь исключительно, на описание функции Now() в официальной справке по Delphi, которая гласит следующее: «Несмотря на то, что в TDateTime могут передаваться миллисекунды, Now() имеет точность до ближайшей секунды«. То есть, если использовать Now(), то определять интервал времени с точностью до миллисекунд — не имеет смысла.

Способ №2 — используем Windows API. Функция GetTickCount().

Функция GetTickCount() не имеет параметров и возвращает количество миллисекунд, прошедших с момента запуска системы. Судя по официальной справке Microsoft, р азрешение функции GetTickCount() ограничено разрешением системного таймера, которое обычно находится в диапазоне от 10 до 16 миллисекунд. При этом, счётчик миллисекунд будет обнулен, если система запущена более 49,7 дней.
В принципе, пример использования этой функции похож на предыдущий:

Так, используя функцию GetTickCount() мы можем засечь время выполнения операции в Delphi с точностью до миллисекунды. Если и такая точность Вам не подходит и необходимо измерить интервал времени ещё точнее, то следующий способ — для вас.

Способ №3 — продолжаем использовать Windows API. Функции QueryPerformanceCounter и QueryPerformanceFrequency

Об этих функциях я рассказывал давным-давно, но, повторюсь ещё раз.

QueryPerformanceCounter — извлекает текущее значение счетчика производительности, которое представляет собой метку времени с высоким разрешением ( TStopwatch использует функциональные возможности, зависящие от операционной системы, для получения доступа к таймерам с высоким разрешением, если они доступны. Если таймеры с высоким разрешением в ОС недоступны, то используются обычные таймеры.

Несмотря на то, что TStopwatch — это запись, для корректного использования всё же необходимо вызывать метод Create или StartNew.

Описание TStopwatch следующее:

  • Свойство IsHighResolution указывает, основан ли таймер на счетчике производительности с высоким разрешением.
  • Метод Start() начинает измерять прошедшее время.
  • Метод Stop() останавливает измерение прошедшего времени.
  • Свойство ElapsedMilliseconds получает общее истекшее время в миллисекундах.
  • Свойство Elapsed получает истекшее время в виде TTimeSpan.

Воспользоваться возможностями TStopwatch также достаточно просто, например, так:

В представленном выше примере мы воспользовались TStopwatch и вывели количество минут (с дробной частью), пошедших на выполнение какой-то операции. В целом же, используя возможность TStopwatch.Elapsed можно выводить любые значения, ограниченные лишь возможностями TTimeSpan (см. справку).

Подведем итог

Итак, чтобы измерить точное время выполнения операции в Delphi, необходимо, прежде всего определиться с тем какая точность Вас устроит? Если достаточно, чтобы интервал времени определялся с точностью до секунды, то достаточно воспользоваться обычной, давно известной функцией Now(). Да, точность самая низкая, но, зато — просто.

Если ваше требование к точности измерения времени ограничивается миллисекундой — используйте GetTickCount(): просто, достаточно надежно (только, если вы не планируете измерять интервал времени больше 49,7 дней).

Типы, функции и процедуры Delphi для работы с датой и временем.

Содержание:


Функции и процедуры Delphi для работы с датой и временем.


Тип TDateTime.


Тип TTimeStamp.


Тип TSQLTimeStamp.


Функции и процедуры Delphi для работы с датой и временем.


Таблица стандартных процедур и функций для работы с датой и временем

Значения символических констант для обозначения дней недели в соответствии с ISO 8601. Используйте эти константы для работы с функциями, работающими в соответствии со стандартом ISO 8601 (функции из модуля DateUtils).

Внимание: Не используйте эти константы с функцией DayOfWeek, которая трактует Воскресение (Sunday) как первый день недели.

Возвращает день недели из значения TDateTime. Возвращаемое функцией значение находится в промежутке между 1 и 7, где 1 соответствует Понедельнику (Monday), а 7 — Воскресение (Sunday).

Внимание: Значения DayOfTheWeek соответствуют ISO 8601 (где Понедельник (Monday) является первым днем недели). Если хотите чтобы первым днем недели считалось Воскресение (Sunday) используйте функцию DayOfWeek вместо функции DayOfTheWeek.

Совет: Чтобы сделать возвращаемые значения более читабельными, используйте константы Day of week.

Возвращает день недели из значения TDateTime. Возвращаемое функцией значение находится в промежутке между 1 и 7, где Воскресение (Sunday) является первым днем недели, а Суббота (Saturday) — седьмым.

Внимание: Значения DayOfWeek не соответствуют ISO 8601 (где Понедельник (Monday) является первым днем недели). Если хотите чтобы первым днем недели считался Понедельник (Monday) используйте функцию DayOfTheWeek вместо функции DayOfWeek.

Наименование Вид
модуль
Описание
CheckSqlTimeStamp процедура
SqlTimSt
Проверяет соответствует ли значение TSQLTimeStamp правильной дате и времени.
CompareDate функция
DateUtils
Сравнивает два значения TDateTime между собой по значению даты.
CompareDateTime функция
DateUtils
Сравнивает два значения TDateTime между собой.
CompareTime функция
DateUtils
Сравнивает два значения TDateTime между собой по значению времени.
CurrentYear функция
SysUtils
Возвращает текущий год.
Date функция
SysUtils
Возвращает текущую дату.
DateDelta константа
SysUtils
Определяет различие между значениями TDateTime и TTimeStamp.
DateOf функция
DateUtils
«Вырезает» значение времени из TDateTime (устанавливает значение времени в 0, что означает полночь).
DateTimeToFileDate функция
SysUtils
Конвертирует объект TDateTime в формат времени операционной системы.
DateTimeToSQLTimeStamp функция
SqlTimSt
Конвертирует значение TDateTime в TSQLTimeStamp.
DateTimeToStr функция
SysUtils
Конвертирует значение TDateTime в строку.
DateTimeToString процедура
SysUtils
Конвертирует значение TDateTime в строку, используя указаный формат строки.
DateTimeToSystemTime процедура
SysUtils
Конвертирует значение TDateTime в системное время Win32 API.
DateTimeToTimeStamp функция
SysUtils
Конвертирует значение TDateTime в соответствующее значение TTimeStamp.
DateToStr функция
SysUtils
Конвертирует значение даты из TDateTime в строку.
Day of week константы
DateUtils
DayOf функция
DateUtils
Возвращает день месяца из значения TDateTime. Возвращаемое функцией значение находится в промежутке между 1 и 31.
DayOfTheMonth функция
DateUtils
Возвращает день месяца из значения TDateTime. Возвращаемое функцией значение находится в промежутке между 1 и 31.
DayOfTheWeek функция
DateUtils
DayOfTheYear функция
DateUtils
Возвращает количество дней между значением, указаным в TDateTime и 31 Декабря предыдущего года.
DayOfWeek функция
SysUtils
DaysBetween функция
DateUtils
Возвращает количество полных дней из промежутка времени, заданного двумя значениями TDateTime.
DaysInAMonth функция
DateUtils
Возвращает количество дней в указаном месяце указаного года.
DaysInAYear функция
DateUtils
Возвращает количество дней в указаном году.
DaysInMonth функция
DateUtils
Возвращает количество дней в месяце, заданом в значении TDateTime.
DaysInYear функция
DateUtils
Возвращает количество дней в году, заданом в значении TDateTime.
DaySpan функция
DateUtils
Возвращает количество дней, включая дробную часть, из промежутка времени, заданного двумя значениями TDateTime.
DecodeDate процедура
SysUtils
Возвращает значения Год, Месяц, День для значения TDateTime.
DecodeDateDay процедура
DateUtils
Возвращает год и день года для значения, указаного в TDateTime.
DecodeDateFully функция
SysUtils
Возвращает значения Год, Месяц, День, День_Недели для значения TDateTime.
DecodeDateMonthWeek процедура
DateUtils
Возвращает значения Год, Месяц, Неделя_Месяца, День_Недели для значения TDateTime.
DecodeDateTime процедура
DateUtils
Возвращает значения Год, Месяц, День, Час, Минута, Секунда, Милисекунда для значения TDateTime.
DecodeDateWeek процедура
DateUtils
Возвращает значения Год, Неделя_Года, День_Недели для значения TDateTime.
DecodeDayOfWeekInMonth процедура
DateUtils
Для заданного значения TDateTime возвращает Год, Месяц, День_Недели и Число_Дней_в_Этой_Неделе_для_Этого_Месяца.
DecodeTime процедура
SysUtils
Разбивает значение TDateTime на часы, минуты, секунды и милисекунды.
EncodeDate функция
SysUtils
Возвращает значение TDateTime, заданое как Год, Месяц, День.
EncodeDateDay функция
DateUtils
Возвращает значение TDateTime, заданое как указаный день указаного года.
EncodeDateMonthWeek функция
DateUtils
Возвращает значение TDateTime, заданое как указаный день указаной недели в указаном месяце и году.
EncodeDateTime функция
DateUtils
Возвращает значение TDateTime, заданое как Год, Месяц, День, Час, Секунда, Милисекунда.
EncodeDateWeek функция
DateUtils
Возвращает значение TDateTime, заданое как указаный день указаной недели в указаном году.
EncodeDayOfWeekInMonth функция
DateUtils
Возвращает значение TDateTime, заданое как положение дня недели в указаном месяце и году.
EncodeTime функция
SysUtils
Возвращает значение TDateTime, заданое как часы, минуты, секунды и милисекунды.
EndOfADay функция
DateUtils
Возвращает значение TDateTime которое представляет последнюю милисекнду указаного дня.
EndOfAMonth функция
DateUtils
Возвращает значение TDateTime которое представляет последнюю милисекнду последнего дня указаного месяца.
EndOfAWeek функция
DateUtils
Возвращает значение TDateTime которое представляет последнюю милисекнду последнего дня указаной недели.
EndOfAYear функция
DateUtils
Возвращает значение TDateTime которое представляет последнюю милисекнду последнего дня указаного года.
EndOfTheDay функция
DateUtils
Возвращает значение TDateTime которое представляет последнюю милисекнду дня, указаного в TDateTime.
EndOfTheMonth функция
DateUtils
Возвращает значение TDateTime которое представляет последнюю милисекнду последнего дня месяца, указаного в TDateTime.
EndOfTheWeek функция
DateUtils
Возвращает значение TDateTime которое представляет последнюю милисекнду последнего дня недели, указаной в TDateTime.
EndOfTheYear функция
DateUtils
Возвращает значение TDateTime которое представляет последнюю милисекнду последнего дня года, указаного в TDateTime.
FormatDateTime функция
SysUtils
Возвращает значение TDateTime в виде форматной строки. Если форматная строка не задана, то принимается та, которая основана на текущей локализации системы.
HourOf функция
DateUtils
Возвращает час дня, из значения TDateTime.
HourOfTheDay функция
DateUtils
Возвращает час дня, из значения TDateTime.
HourOfTheMonth функция
DateUtils
Возвращает количество часов между указаным в значении TDateTime и 12:00 AM первого дня месяца.
HourOfTheWeek функция
DateUtils
Возвращает количество часов между указаным в значении TDateTime и 12:00 AM первого дня недели.
HourOfTheYear функция
DateUtils
Возвращает количество часов между указаным в значении TDateTime и 12:00 AM первого дня года.
HoursBetween функция
DateUtils
Возвращает количество полных часов между двумя значениями TDateTime.
HourSpan функция
DateUtils
Возвращает количество часов, включая дробную часть, между двумя значениями TDateTime.
IncAMonth процедура
SysUtils
Увеличивает дату на один месяц.
IncDay функция
DateUtils
Возвращает дату, сдвинутую на указаное число дней.
IncHour функция
DateUtils
Возвращает дату/время, сдвинутую на указаное число часов.
IncMilliSecond функция
DateUtils
Возвращает дату/время, сдвинутую на указаное число милисекунд.
IncMinute функция
DateUtils
Возвращает дату/время, сдвинутую на указаное число минут.
IncMonth функция
SysUtils
Возвращает дату, сдвинутую на указаное число месяцев.
IncSecond функция
DateUtils
Возвращает дату/время, сдвинутую на указаное число секунд.
IncWeek функция
DateUtils
Возвращает дату, сдвинутую на указаное число недель.
IncYear функция
DateUtils
Возвращает дату, сдвинутую на указаное количество лет.
IsInLeapYear функция
DateUtils
Показывает, принадлежит ли значение, указаное в TDateTime, високосному году.
IsLeapYear функция
SysUtils
Показывает, является ли указаный год високосным.
IsPM функция
DateUtils
Показывает, принадлежит ли значение времени, указаное в TDateTime, второй половине дня .
IsSameDay функция
DateUtils
Показывает, принадлежит ли значение, указаное в TDateTime, заданой дате.
IsToday функция
DateUtils
Показывает, принадлежит ли значение, указаное в TDateTime, текущей дате.
IsValidDate функция
DateUtils
Проверяет, являются ли указаные год, месяц и день допустимой датой.
IsValidDateDay функция
DateUtils
Проверяет, являются ли указаные год и день года допустимой датой.
IsValidDateMonthWeek функция
DateUtils
Проверяет, являются ли указаные год, месяц, неделя месяца и день недели допустимой датой.
IsValidDateTime функция
DateUtils
Проверяет, являются ли указаные год, месяц, день, час, минута, секунда и милисекунда допустимыми значениями даты и времени.
IsValidDateWeek функция
DateUtils
Проверяет, являются ли указаные год, неделя года и день недели допустимой датой.
IsValidTime функция
DateUtils
Проверяет, являются ли указаные час, минута, секунда и милисекунда допустимыми значениями даты и времени.
MilliSecondOf функция
DateUtils
Возвращает милисекунды из значения TDateTime.
MilliSecondOfTheDay функция
DateUtils
Возвращает количество милисекунд, прошедшее между значением указаным в TDateTime и началом этого самого дня.
MilliSecondOfTheHour функция
DateUtils
Возвращает количество милисекунд, прошедшее между значением указаным в TDateTime и началом этого самого часа.
MilliSecondOfTheMinute функция
DateUtils
Возвращает количество милисекунд, прошедшее между значением указаным в TDateTime и началом этой самой минуты.
MilliSecondOfTheMonth функция
DateUtils
Возвращает количество милисекунд, прошедшее между значением указаным в TDateTime и началом месяца.
MilliSecondOfTheSecond функция
DateUtils
Возвращает милисекунды из значения TDateTime.
MilliSecondOfTheWeek функция
DateUtils
Возвращает количество милисекунд, прошедшее между значением указаным в TDateTime и 12:00:00:00 AM первого дня недели.
MilliSecondOfTheYear функция
DateUtils
Возвращает количество милисекунд, прошедшее между значением указаным в TDateTime и 12:00:00:00 AM первого дня года.
MilliSecondsBetween функция
DateUtils
Возвращает количество милисекунд между двумя значениями TDateTime.
MilliSecondSpan функция
DateUtils
Возвращает количество милисекунд между двумя значениями TDateTime. Но в качестве результата вместо целого типа испльзуется число с плавающей точкой.
MinuteOf функция
DateUtils
Возвращает минуты из значения TDateTime.
MinuteOfTheDay функция
DateUtils
Возвращает количество минут между значением указаным в TDateTime и 12:00 AM того же дня.
MinuteOfTheHour функция
DateUtils
Возвращает количество минут, прошедшее между значением указаным в TDateTime и началом этого самого часа.
MinuteOfTheMonth функция
DateUtils
Возвращает количество минут, прошедшее между значением указаным в TDateTime и 12:00 AM первого дня месяца.
MinuteOfTheWeek функция
DateUtils
Возвращает количество минут, прошедшее между значением указаным в TDateTime и 12:00 AM первого дня недели.
MinuteOfTheYear функция
DateUtils
Возвращает количество минут, прошедшее между значением указаным в TDateTime и 12:00 AM первого дня года.
MinutesBetween функция
DateUtils
Возвращает количество полных минут между двумя значениями TDateTime.
MinuteSpan функция
DateUtils
Возвращает количество минут, включая дробную часть, между двумя значениями TDateTime.
MonthOf функция
DateUtils
Возвращает месяц года из значения TDateTime.
MonthOfTheYear функция
DateUtils
Возвращает месяц года из значения TDateTime.
MonthsBetween функция
DateUtils
Возвращает количество полных месяцев между двумя значениями TDateTime.
MonthSpan функция
DateUtils
Возвращает количество месяцев, включая дробную часть, между двумя значениями TDateTime.
MSecsToTimeStamp функция
SysUtils
Конвертирует указаное количество милисекунд в значение TTimeStamp.
Now функция
SysUtils
Возвращает текущие дату и время.
NthDayOfWeek функция
DateUtils
Возвращает сколько дней, с таким же порядковым номером дня недели, было в текущем месяце, представленом значением TDateTime.
NullSQLTimeStamp константа
SqlTimSt
Значение NULL для TSQLTimeStamp.
OneHour Constant;
OneMillisecond Constant;
OneMinute Constant;
OneSecond Constant
константы
DateUtils
Обратные константы времени в модуле Delphi.
RecodeDate функция
DateUtils
Меняет в TDateTime значение даты на новые значения Год, Месяц, День. В случае неудачи вызывает исключение EConvertError.
RecodeDateTime функция
DateUtils
Выборочно изменяет в TDateTime значения Год, Месяц, День, Час, Секунда, Милисекунда на заданые. В случае неудачи вызывает исключение EConvertError.
RecodeDay функция
DateUtils
Меняет значение День месяца в TDateTime на заданое. В случае неудачи вызывает исключение EConvertError.
RecodeHour функция
DateUtils
Меняет значение Час дня в TDateTime на заданое. В случае неудачи вызывает исключение EConvertError.
RecodeMilliSecond функция
DateUtils
Меняет значение Милисекунда в TDateTime на заданое. В случае неудачи вызывает исключение EConvertError.
RecodeMinute функция
DateUtils
Меняет значение Минута часа в TDateTime на заданое. В случае неудачи вызывает исключение EConvertError.
RecodeMonth функция
DateUtils
Меняет значение Месяц года в TDateTime на заданое. В случае неудачи вызывает исключение EConvertError.
RecodeSecond функция
DateUtils
Меняет значение Секунда часа в TDateTime на заданое. В случае неудачи вызывает исключение EConvertError.
RecodeTime функция
DateUtils
Меняет в TDateTime значение времени на новые значения Час, Минута, Секунда, Милисекунда. В случае неудачи вызывает исключение EConvertError.
RecodeYear функция
DateUtils
Меняет значение Год в TDateTime на заданое. В случае неудачи вызывает исключение EConvertError.
ReplaceDate процедура
SysUtils
Заменяет значение даты в TDateTime на заданое.
ReplaceTime процедура
SysUtils
Заменяет значение времени в TDateTime на заданое.
SameDate функция
DateUtils
Показывает, представляют ли два значения TDateTime тот же самый год, месяц и день.
SameDateTime функция
DateUtils
Показывает, представляют ли два значения TDateTime те же самые год, месяц, день, час, секунда, милисекунда.
SameTime функция
DateUtils
Показывает, совпадают ли значения времени в двух значениях TDateTime.
SecondOf функция
DateUtils
Возвращает количество секунд минуты из значения TDateTime.
SecondOfTheDay функция
DateUtils
Возвращает количество секунд между значением указаным в TDateTime и 12:00:00 AM того же самого дня.
SecondOfTheHour функция
DateUtils
Возвращает количество секунд между значением указаным в TDateTime и началом того же самого часа.
SecondOfTheMinute функция
DateUtils
Возвращает количество секунд между значением указаным в TDateTime и началом той же самой минуты.
SecondOfTheMonth функция
DateUtils
Возвращает количество секунд между значением указаным в TDateTime и 12:00:00 AM первого дня месяца.
SecondOfTheWeek функция
DateUtils
Возвращает количество секунд между значением указаным в TDateTime и 12:00:00 AM первого дня недели.
SecondOfTheYear функция
DateUtils
Возвращает количество секунд между значением указаным в TDateTime и 12:00:00 AM первого дня года.
SecondsBetween функция
DateUtils
Возвращает количество секунд между двумя значениями TDateTime.
SecondSpan функция
DateUtils
Возвращает количество секунд, включая дробную часть, между двумя значениями TDateTime.
SQLDayOfWeek функция
SqlTimSt
Возвращает день недели из значения TSQLTimeStamp. Возвращаемое функцией значение находится в промежутке между 1 и 7, где Воскресение (Sunday) является первым днем недели, а Суббота (Saturday) — седьмым.
SQLTimeStampToDateTime функция
SqlTimSt
Конвертирует значение TSQLTimeStamp в TDateTime.
SQLTimeStampToStr функция
SqlTimSt
Конвертирует значение TSQLTimeStamp в строку.
StartOfADay функция
DateUtils
Возвращает значение TDateTime которое представляет 12:00:00:00 AM указаного дня.
StartOfAMonth функция
DateUtils
Возвращает значение TDateTime которое представляет 12:00:00:00 AM первого дня указаного месяца.
StartOfAWeek функция
DateUtils
Возвращает значение TDateTime которое представляет первый момент указаного дня указаной недели.
StartOfAYear функция
DateUtils
Возвращает значение TDateTime которое представляет первый момент первого дня указаного года.
StartOfTheDay функция
DateUtils
Возвращает значение TDateTime которое представляет 12:00:00:00 AM дня, заданого значением TDateTime.
StartOfTheMonth функция
DateUtils
Возвращает значение TDateTime которое представляет 12:00:00:00 AM первого дня месяца, заданого значением TDateTime.
StartOfTheWeek функция
DateUtils
Возвращает значение TDateTime которое представляет 12:00:00:00 AM первого дня недели, заданой значением TDateTime.
StartOfTheYear функция DateUtils Возвращает значение TDateTime которое представляет 12:00:00:00 AM первого дня года, заданого значением TDateTime.
StrToDate функция
SysUtils
Конвертирует строку с датой в TDateTime. В случае неудачи вызывает исключение EConvertError.
StrToDateDef функция
SysUtils
Конвертирует строку с датой в TDateTime со значением по умолчанию в случае ошибки.
StrToDateTime функция
SysUtils
Конвертирует строку в значение TDateTime. В случае неудачи вызывает исключение EConvertError.
StrToDateTimeDef функция
SysUtils
Конвертирует строку в значение TDateTime со значением по умолчанию в случае ошибки.
StrToSQLTimeStamp функция
SqlTimSt
Конвертирует строку в значение TSQLTimeStamp. В случае неудачи вызывает исключение EConvertError.
StrToTime функция
SysUtils
Конвертирует строку со временем в значение TDateTime. В случае неудачи вызывает исключение EConvertError.
StrToTimeDef функция
SysUtils
Конвертирует строку со временем в значение TDateTime со значением по умолчанию в случае ошибки.
SystemTimeToDateTime функция
SysUtils
Конвертирует значение системного времени в значение TDateTime.
Time модульные константы
SysUtils
Значения констант для вычисления времени.
Time,
GetTime
функции
SysUtils
Возвращают текущее время.
TimeOf функция
DateUtils
Убирает значение даты из значения TDateTime.
TimeStampToDateTime функция
SysUtils
Конвертирует значение TTimeStamp в соответствующее значение TDateTime.
TimeStampToMSecs функция
SysUtils
Конвертирует значение TTimeStamp в TTimeStamp в абсолютное число милисекунд.
TimeToStr функция
SysUtils
Конвертирует значение времени из TDateTime в строку.
Today функция
DateUtils
Возвращает значение TDateTime, представляющее текущую дату.
Tomorrow функция
DateUtils
Возвращает значение TDateTime, представляющее следующий день.
TryEncodeDate функция
SysUtils
Создает значение TDateTime, предсталяющее указаный Год, Месяц, День. В случае неудачи возвращает False.
TryEncodeDateDay функция
DateUtils
Вычисляет значение TDateTime которое представляет указаный день для указаного года. В случае неудачи возвращает False.
TryEncodeDateMonthWeek функция
DateUtils
Вычисляет значение TDateTime которое представляет указаный день указаной недели в указаном месяце и году. В случае неудачи возвращает False.
TryEncodeDateTime функция
DateUtils
Вычисляет значение TDateTime которое представляет указаные год, месяц, день, час, минуту, секунду и милисекунду. В случае неудачи возвращает False.
TryEncodeDateWeek функция
DateUtils
Вычисляет значение TDateTime которое представляет указаный день указаной недели в указаном году. В случае неудачи возвращает False.
TryEncodeDayOfWeekInMonth функция
DateUtils
Вычисляет значение TDateTime которое представляет указаный день недели в указаном месяце и году. В случае неудачи возвращает False.
TryEncodeTime функция
SysUtils
Создает значение TDateTime для заданых значений Час, Минута, Секунда и Милисекунда. В случае неудачи возвращает False.
TryRecodeDateTime функция
DateUtils
Выборочно меняет значения Год, Месяц, День, Час, Секунда, Милисекунда в указаном TDateTime. В случае неудачи возвращает False.
TryStrToDate функция
SysUtils
Конвертирует строку с датой в TDateTime. В случае неудачи возвращает False.
TryStrToDateTime функция
SysUtils
Конвертирует строку в значение TDateTime. В случае неудачи возвращает False.
TryStrToSQLTimeStamp функция
SqlTimSt
Конвертирует строку в значение TSQLTimeStamp. В случае неудачи возвращает False.
TryStrToTime функция
SysUtils
Конвертирует строку со временем в значение TDateTime. В случае неудачи возвращает False.
UnixDateDelta константа
SysUtils
Определяет разницу между значениями TDateTime и TIME_T. Тип TIME_T используется в системах Unix и Lnux, а так же в стандартных библиотеках C.
WeekOf функция
DateUtils
Возвращает неделю года из значения TDateTime.
WeekOfTheMonth функция
DateUtils
Возвращает неделю месяца из значения TDateTime.
WeekOfTheYear функция
DateUtils
Возвращает неделю года из значения TDateTime.
WeeksBetween функция
DateUtils
Возвращает количество полных недель между двумя значениями TDateTime.
WeeksInAYear функция
DateUtils
Возвращает количество недель в указаном году.
WeeksInYear функция
DateUtils
Возвращает количество недель в году из значения TDateTime.
WeekSpan функция
DateUtils
Возвращает количество недель, включая дробную часть, между двумя значениями TDateTime.
WithinPastDays функция
DateUtils
Показывает, находятся ли две даты в заданом промежутке дней относительно друг друга.
WithinPastHours функция
DateUtils
Показывает, находятся ли два значения даты/времени в заданом промежутке часов относительно друг друга.
WithinPastMilliSeconds функция
DateUtils
Показывает, находятся ли два значения даты/времени в заданом промежутке милисекунд относительно друг друга.
WithinPastMinutes функция
DateUtils
Показывает, находятся ли два значения даты/времени в заданом промежутке минут относительно друг друга.
WithinPastMonths функция
DateUtils
Показывает, находятся ли два значения даты/времени в заданом промежутке месяцев относительно друг друга.
WithinPastSeconds функция
DateUtils
Показывает, находятся ли два значения даты/времени в заданом промежутке секунд относительно друг друга.
WithinPastWeeks функция
DateUtils
Показывает, находятся ли два значения даты/времени в заданом промежутке недель относительно друг друга.
WithinPastYears функция
DateUtils
Показывает, находятся ли два значения даты/времени в заданом промежутке лет относительно друг друга.
YearOf функция
DateUtils
Возвращает Год из значения TDateTime.
YearsBetween функция
DateUtils
Возвращает приблизительное количество лет между двумя значениями TDateTime.
YearSpan функция
DateUtils
Возвращает приблизительное количество лет, включая дробную часть, между двумя значениями TDateTime.
Yesterday функция
DateUtils
Возвращает значение TDateTime которое соответствует предыдущему дню.

Содержание

Тип TDateTime.

Тип TDateTime — это основной тип в Delphi для работы с датой и временем. Он является числом с плавающей запятой, целая часть которого содержит число дней, отсчитанное от некоторого начала календаря, а дробная часть равна части 24-часового дня, т.е. характеризует время и не относится к дате. Для 32-разрядных версий Delphi за начало календаря принята дата 12/30/1899, 12 часов.

Ниже приведены несколько примеров значения TDateTime и соответсвующие им дата и время:

12/30/1899 12:00 am
2.75 1/1/1900 6:00 pm
-1.25 12/29/1899 6:00 am
35065 1/1/1996 12:00 am

Чтобы найти количество дней, включая дробную часть, между двумя датами, просто вычтите два значения, если только одно из них не является отрицательным. Аналогично, если значение TDateTime не отрицательное, то, чтобы увеличить значение даты и времени на определенное кличество дней, включая дробную часть, достаточно прибавить количество дней, включая дробную часть, к значению TDateTime.

Когда обрабатываются отрицательные значения TDateTimes, то вычисление дробной части производится отдельно. Дробная часть отражает часть 24-часового дня не зависимо от знака значения TDateTime. Например, 6:00 am on 12/29/1899 это –1.25, а неt –1 + 0.25, что составило бы –0.75. Значений TDateTime между –1 и 0 не существует. Cовет: В модулях SysUtils и DateUtils для работы с датой и временем имеется большое количество процедур и функций на все случаи жизни. Не заморачивайтесь с обственными вычислениями, не изобретайте велосипед, а пользуйтесь уже готовыми наработками разработчиков Delphi. (См. Функции и процедуры Delphi для работы с датой и временем.) Оно надежнее.

Примечание: В Delphi 1 за начало отсчета принят год 1, т.е. для перевода даты Delphi 1 в дату последующих версий Delphi надо вычесть из даты число 693594.

Содержание

Тип TTimeStamp.

TTimeStamp представляет значения дата и время.

Используйте TTimeStamp если требуется повышеная точность представления значения времени в знчениях дата/время. Если нет необходимости сохранять значение времени с точностью до милисекунд, используйте более компактное TDateTime. Если необходима еще большая точность, то используйте TSQLTimeStamp (но НЕ назначайте его типом Variant).

Поле Time field показывает количество милисекунд, прошедших с полуночи.

Поле Data показывает число календарных дней от начала календаря (число дней с 1/1/0001 плюс один).

Содержание

Тип TSQLTimeStamp.

TSQLTimeStamp представляет значения даты и времени с очень высокой точностью.

Драйвера баз данных dbExpress используют TSQLTimeStamp когда работают со значениями даты и времени.

  • Year определяет год от 1 до 9999.
  • Month определяет месяц от 1 до 12.
  • Day определяет день месяца, от 1 до 28, 29, 30, или 31, в зависимости от значения Month.
  • Hour определяет час от 0 до 23.
  • Minute и Second могут колебаться от 0 до 59.
  • Fractions определяет милисекунды от 0 до 999.

Используя функцию VarSQLTimeStampCreate, Вы можете создать тип Variant который представляет значение TSQLTimeStamp. Фактически, простейший путь манипулирования значениями SQLTimeStamp это создать подобный Variant и использовать встроеные операторы, обеспечивающие работу с Variant.

Использование замыканий и функций высших порядков в Delphi

Данная статья является продолжением предыдущей публикации, которая была посвящена анонимным методам. В этот раз речь пойдет о примерах использования функций высших порядков и замыканий, показавшихся автору интересными.

Delphi не является языком функционального программирования, но тот факт, что программы на нем могут манипулировать функциями как объектами означает, что в Delphi можно использовать приемы функциональной парадигмы. Цель статьи — не подтолкнуть к использованию этого стиля, но обозначить некоторые примеры и возможности.

Конструирование функций

Функции высшего порядка (ФВП) – это функции, которые оперируют функциями, принимая одну или более функций и возвращая новую функцию.
Следующий пример показывает, как с помощью ФВП можно конструировать другие функции.

Функция Negate в примере выше, является ФВП, потому что она принимает функцию IsOdd в виде аргумента и возвращает новую функцию IsEven, которая передает свои аргументы Negate и возвращает логическое отрицание значения, возвращаемого функцией IsOdd.

Так как использование обобщенных типов не способствует ясности изложения, в последующих примерах будем по возможности их избегать.

Композиция функций

Ниже приводится пример еще одной, более универсальной функции, которая принимает две функции, F и G, и возвращает новую функцию, которая возвращает результат F(G()).

Здесь функция Compose вычисляет F(G(X, Y)). Возвращаемая функция передает все свои аргументы функции G, затем передает значение, полученное от G, функции F и возвращает результат вызова F.

Частичное применение

Этот термин описывает преобразование функции с несколькими аргументами в функцию, которая принимает меньшее количество аргументов, при этом значения для опущенных аргументов задаются заранее. Этот прием вполне адекватен своему названию: он «частично применяет» некоторые аргументы функции, возвращая функцию, принимающую остающиеся аргументы.
Функция BindLeft в примере ниже берет функцию Calc, принимающую n аргументов, связывает первые k из них с наперед заданными значениями и возвращает функцию Partial, которая может принять (n-k) аргументов (первые k аргументов будут уже применены к ней).

Здесь интересен момент, когда после вызова BindLeft локальная переменная StoredArgs не прекращает свое существование и используется далее, сохраняя в себе значения аргументов, которые потом используются при вызове Partial и передаются в Calc. Этот эффект называется замыканием. При этом каждый вызов BindLeft будет порождать новые «экземпляры» StoredArgs. Замыкания использовались и в предыдущих примерах, когда в них сохранялись аргументы ФВП.
Определить частичное применение справа можно следующим образом:

Карринг

В то время как частичное применение преобразует функцию с n параметрами в функцию с n-k параметрами, применяя k аргументов, карринг декомпозирует функцию на функции от одного аргумента. Мы не передаем никаких дополнительных аргументов в метод Curry, кроме преобразуемой функции:

  • Curry(F) возвращает функцию F1, такую что.
  • F1(A) возвращает функцию F2, такую что.
  • F2(B) возвращает функцию F3, такую что.
  • F3(С) вызывает F(A, B, C)
Мемоизация

Мемоизованная функция — это функция, которая сохраняет ранее вычисленные результаты. Другими словами, для функции создаётся таблица результатов, и, будучи вычисленным при определённых значениях параметров, результат заносится в эту таблицу. В дальнейшем результат берётся из данной таблицы. Эта техника позволяет за счёт использования дополнительной памяти ускорить работу программы. Разумеется, мемоизируемая функция должна работать без побочных эффектов и ей желательно иметь дискретную область определения.
В следующем примере демонстрируется функция Memoize высшего порядка, которая принимает функцию в виде аргумента и возвращает ее мемоизованную версию.

Функция Memoize создает объект TCache для использования в качестве кэша и присваивает его локальной переменной, благодаря чему он остается доступным (через замыкание) только для возвращаемой функции. Возвращаемая функция преобразует свой аргумент в ключ. Если значение присутствует в кэше, оно просто возвращается в качестве результата. В противном случае вызывается оригинальная функция, вычисляющая значение для заданного аргумента; полученное значение помещается в кэш и возвращается.

Программа с мемоизованной функцией, периодически вызываемой с одинаковыми аргументами, должна выполняться быстрее, чем аналогичная программа без применения мемоизации. Проверим разницу:

Генераторы

Здесь под генератором понимается ФВП, которая возвращает функцию, вызов которой приводит к получению следующего члена некоторой последовательности. В примере ниже создаются два генератора: для последовательности Фибоначчи и генератор факториалов. Предыдущие элементы генераторов запоминаются в замыкании.

Польза генераторов заключается в том, что для вычисления каждого следующего элемента не требуется вычислять всю последовательность с самого начала. Генераторы позволяют работать даже с бесконечными последовательностями, но они обеспечивают только последовательный доступ к своим элементам и не позволяют обращаться к своим элементам по индексу: чтобы получить n-e значение придется выполнить n-1 итераций.

Отложенные вычисления

Генераторы бывает удобно использовать для последовательной обработки данных — элементов списка, строк текста, лексем в лексическом анализаторе и т.д. Генераторы можно объединять в цепочки, подобно конвейеру команд в Unix. Самое интересное в этом подходе заключается в том, что он следует принципу отложенных вычислений: значения «извлекаются» из генератора (или из конвейера) по мере необходимости, а не все сразу. Эту особенность демонстрирует следующий пример, в котором исходный текст фильтруется, построчно проходя через цепочку генераторов.

Функции delphi

Здравствуй, дорогой читатель. Сегодня я планирую рассказать о таком значимом элементе программирования как функции. А если быть точным, будем разбирать функции Delphi.

Начнем с общего определения:

Функция – фрагмент программного кода, который имеет свое имя. По этому имени данный фрагмент можно вызвать из любого места программы. Результатом выполнения функции Delphi является значение.

Объясню доступным языком, зачем нужны функции. Представьте себе ситуацию, что Вам в программе нужно несколько раз вычислять площадь квадрата. Вместо того, чтобы каждый раз писать один и тот же код, Вы можете объявить функцию и просто вызывать её в нужном месте. Если ещё не совсем понятно зачем все это нужно, советую прочесть статью до конца и на примерах станет все ясно.

Давайте разберем как определить функцию.

Итак, в начале идет ключевое слово function, затем имя функции. Далее в круглых скобках список параметров. Также необходимо указать тип возвращаемого результата. При необходимости можно определить локальные переменные. Между операторных скобок (begin..end;) необходимо записать требуемые инструкции.

В каждой функции Delphi автоматически создает переменную с именем result, переменная имеет тот же тип, что и возвращаемое значение функции. С помощью этой переменной мы и будем возвращать значения. (Есть еще одна возможность вернуть значение, её я продемонстрирую на примере).

В функцию можно передавать параметры разных типов: значения, константы, переменные, выходные параметры. Но это тема отдельной статьи, которую я напишу чуть позже.

Разберем применение функций Делфи на простом примере.

Создайте новое приложение и на форме разместите три кнопки (Button).

Далее откройте код и будем писать функцию, цель которой будет возвращать квадрат числа. Описание у нас будет вне класса после строк:

Сама же функция будет иметь следующий вид:

Название – square, параметр всего один – x типа Double, результат тоже будет Double.

Делфи позволяет возвращать значения через переменную, название которой совпадает с названием функции Delphi. В нашем случае это выглядит так: square:=x*x;(закомментированный код).

Теперь посмотрим как можно использовать написанный код. Напишем обработчик события Onclickдля каждой из кнопок.

  • Для первой кнопки — ShowMessage(FloatToStr(square(1)));
  • Для второй — ShowMessage(FloatToStr(square(2)));
  • Для третей — ShowMessage(FloatToStr(square(3)));

У меня получился следующий Unit

Как можно заметить мы однажды определили функцию, а использовали её трижды. Если функция была бы побольше, мы бы сэкономили уйму времени и сил, сократили количество вводимого текста. Модифицировать программу также легче, если Вы используете функции – поправив тело функции вы изменяете логику на всех участках, где она используется.

Подведем итог. Функции делают разработку на Делфи проще и быстрее, код читабельнее, правку проще. Используйте фунуции Delphi.

Процедуры и функции преобразования дат и времени (часть 2)

HourOf fconst AValue: TDateTime): Word

Возвращает час указанного значения AValue; то же, что HourOfTheDav .

HourOfThePav fconst AValue: TDateTime): Word

Возвращает час указанного значения AValue; то же, что HourOfDay .

HourOfTheMonth(const AValue: TDateTime): Word

Возвращает число полных часов, отсчитанное от начала месяца, к которо­му относится указанное значение AValue, до этого указанного значения.

HourOfTheWeek(const AValue: TDateTime): Word

Возвращает число полных часов, отсчитанное от начала недели, к которой относится указанное значение AValue, до этого указанного значения.

HourOfTheYear(const AValue: TDateTime): Word

Возвращает число полных часов, отсчитанное от начала года, к которому относится указанное значение AValue, до этого указанного значения.

HoursBetween fconst ANow, AThen: TDateTime): Int64

Возвращает число полных часов между двумя указанными значениями ANow и AThen.

HourSpan fconst ANow, AThen: TDateTime): Double

Возвращает действительное число, содержащее разность часов (с учетом дробных частей часа) двух указанных значений ANow и AThen.

IncAMonth(var Year, Month, Day: Word; NumberOfMonths: Integer = 1)

Изменяет заданные значения года Year, месяца Month и дня Day, добав­ляя к указанной дате NumberOfMonths месяцев. Число месяцев Number­OfMonths может быть отрицательным.

IncDay(const AValue: TDateTime; const ANumberOfDays: Integer = 1):

TDateTime

Возвращает дату, сдвинутую по отношению к указанной дате AValue на ANumberOfDays дней. Число дней ANumberOfDays может быть отрица­тельным.

IncHour(const AValue: TDateTime; const ANumberOfHours: Int64 = 1):

TDateTime

Возвращает дату и время, сдвинутые по отношению к указанной дате AValue на ANumberOfHours часов. Число часов ANumberOfHours может быть отрицательным.

IncMilliSecond(const AValue: TDateTime;

const ANumberOfMilliseconds: Int64 = 1): TDateTime

Возвращает дату и время, сдвинутые по отношению к указанной дате AValue на ANumberOfMilliSeconds миллисекунд. Число миллисекунд ANumberOfMilliSeconds может быть отрицательным.

IncMinute(const AValue: TDateTime; const ANumberOfMinutes:

Int64 = 1): TDateTime

Возвращает дату и время, сдвинутые по отношению к указанной дате AValue на ANumberOfMinutes минут. Число минут ANumberOfMinutes

может быть отрицательным.

IncMonth(const Date: TDateTime; NumberOfMonths: Integer = 1):

TDateTime

Возвращает дату, сдвинутую по отношению к указанной дате Date на NumberOfMonths месяцев. Число месяцев NumberOfMonths может быть отрицательным.

IncSecond(const AValue: TDateTime; const ANumberOfSeconds:

Int64 = 1): TDateTime

Возвращает дату и время, сдвинутые по отношению к указанной дате AValue на ANumberOfSeconds секунд. Число секунд ANumberOfSeconds может быть отрицательным.

IncWeek(const AValue: TDateTime; const ANumberOfWeeks: Integer = 1):

TDateTime

Возвращает дату, сдвинутую по отношению к указанной дате AValue на ANumberOfWeeks недель. Число недель ANumberOfWeeks может быть от­рицательным.

IncYear(const AValue: TDateTime; const ANumberOfYears: Integer = 1):

TDateTime

Возвращает дату, сдвинутую по отношению к указанной дате AValue на ANumberOfYears лет. Число лет ANumberOfYears может быть отрица­тельным.

IsInLeapYear(const AValue: TDateTime): Boolean

Определяет, относится ли указанная дата AValue к високосному году.

IsLeapYear(Year: Word): Boolean

Определяет, является ли указанный год Year високосным.

IsPM(const AValue: TDateTime): Boolean

Определяет, относится ли указанное время AValue ко второй половине дня (после полудня).

IsSameDay(const AValue, ABasis: TDateTime): Boolean

Определяет, относятся ли два указанных значения AValue и ABasis к од­ному дню.

IsToday(const AValue: TDateTime): Boolean

Определяет, относится ли указанное значение AValue к текущему дню.

IsValidDate(eonst AYear, AMonth, ADay: Word): Boolean

Определяет допустимость указанных значений года AYear, месяца AMonth и дня ADay.

MilliSecondOfl const AValue: TDateTime): Word

Извлекает миллисекунды из величины AValue типа TDateTime. Идентич­на функции MilliSecondOfTheSecond .

MilliSecondOfTheSecond fconst AValue: TDateTime): Word

Извлекает миллисекунды из величины AValue типа TDateTime. Идентич­на функции MilliSecondOf .

MilliSecondsBetween fconst ANow, AThen: TDateTime): Int64

Возвращает разность миллисекунд двух указанных значений ANow и

MilliSecondSpan (const ANow, AThen: TDateTime): Double

Возвращает разность миллисекунд двух указанных значений ANow и AThen. MinutcOtY const AValue: TDateTime): Word

Извлекает минуты из величины AValue типа TDateTime. Идентична функ­ции MinuteOfTheHour .

MinuteOfTheHour tconst AValue: TDateTime): Word

Извлекает минуты из величины AValue типа TDateTime. Идентична функ­ции MinuteOf .

MinutesBetwcen (const ANow, AThen: TDateTime): Int64

Возвращает число полных минут между двумя указанными значениями ANow и AThen.

MinuteSpan (const ANow, AThen: TDateTime): Double

Возвращает действительное число, содержащее разность минут (с учетом

секунд, как дробных частей минуты) двух указанных значений ANow и

MonthOf(const AValue: TDateTime): Word

Извлекает месяц из величины AValue типа TDateTime. Идентична функ-

MonthOfTheYcar (const AValue: TDateTime): Word

Извлекает месяц из величины AValue типа TDateTime. Идентична функ­ции MonthOf .

MonthsBetween (const ANow, AThen: TDateTime): Int64

Возвращает число полных месяцев (с некоторой погрешностью) между дву­мя указанными значениями ANow и AThen.

MonthSpan fconst ANow, AThen: TDateTime): Double

Возвращает действительное число, содержащее число месяцев (с учетом дробной части месяца, но с некоторой погрешностью) между двумя ука­занными значениями ANow и AThen.

Now : TDateTime

Возвращает текущую дату и время.

RecodeDate(const AValue: TDateTime;

const AYear, AMonth, ADay: Word): TDateTime

Возвращает значение TDateTime, соответствующее заданному значению AValue с датой, измененной в соответствии с заданными значениями года AYear, месяца AMonth, дня ADay.

RecodeDateTime(const AValue: TDateTime; const AYear, AMonth, ADay, AHour, AMinute, ASecond, AMilliSecond: Word): TDateTime

Возвращает значение TDateTime, соответствующее заданному значению AValue с датой, измененной в соответствии с заданными значениями года AYear, месяца AMonth, дня ADay, и временем, измененным в соответст­вии с заданными значениями часа AHour, минут AMinute, секунд ASecond, миллисекунд AMilliSecond. Каждый из параметров может быть задан равным RecodeLeaveFieldAsIs, что будет означать, что данное значе­ние не изменяется.

RecodeDay(const AValue: TDateTime; const ADay: Word): TDateTime

Возвращает значение TDateTime, соответствующее заданному значению AValue с днем, замененным на указанное значение ADay.

RecodeHour(const AValue: TDateTime; const AHour: Word): TDateTime

Возвращает значение TDateTime, соответствующее заданному значению AValue с часом, замененным на указанное значение AHour.

RecodeMilliSecond(const AValue: TDateTime; const AMilliSecond: Word):

TDateTime

Возвращает значение TDateTime, соответствующее заданному значению AValue с числом миллисекунд, замененным на указанное значение AMilliSecond.

RecodeMinute(const AValue: TDateTime; const AMinute: Word):

TDateTime

Возвращает значение TDateTime, соответствующее заданному значению AValue с минутами, замененными на указанное значение AMinute.

RecodeMonth(const AValue: TDateTime; const AMonth: Word): TDateTime

Возвращает значение TDateTime, соответствующее заданному значению AValue с месяцем, замененным на указанное значение AMonth.

RecodeSecond(const AValue: TDateTime; const ASecond: Word):

TDateTime

Возвращает значение TDateTime, соответствующее заданному значению AValue с секундами, замененными на указанное значение ASecond.

RecodeTime(const AValue: TDateTime;

const AHour, AMinute, ASecond, AMilliSecond: Word): TDateTime

Возвращает значение TDateTime, соответствующее заданному значению AValue с временем, измененным в соответствии с заданными значениями часа AHour, минут AMinute, секунд ASecond, миллисекунд AMilliSecond.

RecodeYear(const AValue: TDateTime; const AYear: Word): TDateTime

Возвращает значение TDateTime, соответствующее заданному значению AValue с годом, замененным на указанное значение AYear.

ReplaceDate(var DateTime: TDateTime; const NewDate: TDateTime)

Заменяет дату в заданном значении AValue на дату другого заданного значения NewDate, оставляя время неизменным.

ReplaceTime(var DateTime: TDateTime; const NewTime: TDateTime)

Заменяет время в заданном значении AValue на время другого заданного значения NewDate, оставляя дату неизменной.

SecondOf(const AValue: TDateTime): Word

Извлекает секунды из величины AValue типа TDateTime. Идентична

SecondOfTheMinute fconst AValue: TDateTime): Word

Извлекает секунды из величины AValue типа TDateTime. Идентична функции SecondOf .

SecondsBetween fconst ANow, AThen: TDateTime): Int64

Возвращает число полных секунд между двумя указанными значениями ANow и AThen.

SecondSpan fconst ANow, AThen: TDateTime): Double

Возвращает действительное число, содержащее разность секунд (с учетом миллисекунд, как дробных частей секунды) двух указанных значений ANow и AThen.

StrToDate (const S: string): TDateTime

Преобразует строку S в дату формата TDateTime. StrToDateTime (const S: string): TDateTime Преобразует строку S в формат даты и времени. StrToTime (const S: string): TDateTime

Преобразует строку S в формат времени TDateTime. Time : TDateTime Возвращает текущее время.

TimeToStr (Time: TDateTime): string Преобразует время Time в строку.

TryEncodeDate (Year. Month, Day: Word; out Date: TDateTime): Boolean

Объединяет год Year, месяц Month и день Day в значение Date типа TDateTime. Возвращает false, если заданные значения месяца или дня не­допустимы.

TryEncodeTime (Hour, Min, Sec, MSec: Word; out Time: TDateTime):

Boolean;

Объединяет час Hour, минуту Min, секунду Sec и миллисекунду MSec в значение типа TDateTime. Возвращает false при ошибочных данных.

VarFromDateTime(DateTime: TDateTime): Variant;

Создает объект variant, содержащий дату и время DateTime.

VarSQLTimeStampCreate(var aDest: Variant;

const ASQLTimeStamp: TSQLTimeStamp)

Создает объект aDest типа variant с данными, полученными из записи

ASQLTimeStamp типа TSQLTimeStamp .

VarSQLTimeStampCreate(const AValue: TDateTime): Variant Возвращает объект типа variant с полученными из AValue данными, хра­нящимися в записи типа TSQLTimeStamp .

VarSQLTimeStampCreate: Variant

Возвращает объект типа variant с нулевыми данными, хранящимися в за­писи типа TSQLTimeStamp .

VarSQLTimeStampCreate(const ASQLTimeStamp: TSQLTimeStamp):

Variant

Возвращает объект типа variant с полученными из ASQLTimeStamp дан­ными, хранящимися в записи типа TSQLTimeStamp .

VarSQLTimeStampCreate(const AValue: string): Variant

Возвращает объект типа variant с полученными из строки AValue данны­ми, хранящимися в записи типа TSQLTimeStamp .

YearOf(const AValue: TDateTime): Word

Извлекает год из величины AValue типа TDateTime.

YearsBetween (const ANow, AThen: TDateTime): Integer

Возвращает число полных лет (с некоторой погрешностью) между двумя указанными значениями ANow и AThen.

YearSp_an(const ANow, AThen: TDateTime): Double

Возвращает действительное число, содержащее число полных лет (с учетом дробной части неполного года, но с некоторой погрешностью) между двумя указанными значениями ANow и AThen.

CheckSqlTimeStamp(const ASQLTimeStamp :TSQLTimeStamp)

Проверяет правильность представления даты и времени в записи ASQLTimeStamp типа TSQLTimeStamp. Если значения полей записи име­ют недопустимые значения, генерируется исключение EConverError.

CompareDate (const А, В: TDateTime): TValueRelationship

Сравнивает даты А и В. Возвращает -1 (LessThanValue), если день даты А меньше дня даты В, 0 (EqualsValue), если дни А и В совпадают, +1 (GreaterThanValue), если день даты А больше дня даты В.

CompareDateTime fconst А, В: TDateTime): TValueRelationship

Сравнивает значения А и В. Возвращает -1 (LessThanValue) при А ( EqualsValue ) при А = В, +1 ( Grea terThanValue) при А > В.

CompareTime (const А, В: TDateTime): TValueRelationship

Сравнивает значения А и В, но только их часть, относящуюся ко времени. Возвращает -1 (LessThanValue) при А В

Илон Маск рекомендует:  Что такое код mssql_guid_string
Понравилась статья? Поделиться с друзьями:
Кодинг, CSS и SQL