ReplaceDate — Процедура Delphi

Содержание

ReplaceDate — Процедура Delphi

Описание
Процедура заменяет значение даты в переменной DateTime на значение, указанное в параметре NewDate. Значение времени остается неизменным.

Пример
var
DateTime, NewDate: TDateTime;
S: string;
begin
S:= ‘28.02.1999 15:30’;
DateTime:= StrToDateTime(S);
NewDate:= StrToDate(‘29.02.2000’);
ReplaceDate(DateTime, NewDate);
S:= DateTimeToStr(DateTime);
MessageDlg( S, mtInformation, [mbOk], 0);
end;

Процедура в процедуре

19.02.2014, 21:33

Процедура в процедуре
Здравствуйте! как мне ввызвать одну процедуру в другой. например: procedure.

Процедура в процедуре — ругань на Listbox
Создал себе такой код: procedure TForm1.N5_Change_LanguageClick(Sender: TObject); var Cl1.

Процедура, описанная в процедуре. Какие преимущества?
Процедура описанная в процедуре: Какие преимущества дает такая структура, объясните пожалста? .

Ошибка в процедуре.
Эта процедура должна из заданного массива брать и сортировать числа по возрастанию и.

Неясность в процедуре
Товарищи у меня вопросик по процедуре: Ниже приведенные две проц-ры я создал и прописал сразу.

Процедуры Delphi

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

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

Как и для функции, в начале каждой процедуры указывают ее заголовок. Затем называют эту процедуру каким-нибудь именем. После имени в скобках следует перечень параметров, заканчивающийся символом «;» и потом уже описывают разделы констант, типов, переменных и инструкций.

Общий вид процедуры Delphi:

Общий вид процедуры Delphi выглядит следующим образом:

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

Если процедура обладает какими-либо параметрами, то программист их указывает в скобках, сразу после имени процедуры. В конце заголовка процедуры ставится символ «;». В случае, когда в процедуре имеются именованные константы, программист объявляет их в разделеconst.

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

Примеры процедуры Delphi:

Приведем пример процедуры Delphi, вычисляющей стоимость некоторой покупки:

Delphi.FireDAC. Выполнение хранимых процедур и функций

Данная статья посвящена выполнению хранимых процедур в FireDAC. Основой для данной статьи стала официальная документация.

Класс TFDStoredProc может быть использован как designtime так и в runtime. TFDStoredProc генерирует SQL команду для вызова хранимой процедуры, базирующейся на свойствах TFDStoredProc. Перед исполнением, FireDAC отправляет значения параметров к DBMS, и после этого исполняет хранимую процедуру и получает output параметры.

Замечание. FireDAC не поддерживает параметры со значениями по умолчанию.

Настройка хранимых процедур в Design Time

Чтобы выполнить хранимую процедуру, необходимо бросить компонент TFDStoredProc на форму. Свойство TFDStoredProc.Connection будет автоматически настроено, если на форме есть FDConnection.

Опционально можно установить CatalogName, SchemaName, и PackageName или выбрать их значения из выпадающего списка. После установки StoredProcName и когда fiMeta включено в FetchOptions.Items, коллекция параметров заполняется автоматически.

Чтобы унифицировать имена параметров, можно установить ResourceOptions.UnifyParams в True. Например, это исключит префикс ‘@’ из имен параметров SQL сервера.

Настройка хранимых процедур в RunTime

Аналогично design-time можно использовать следующий код для run-time

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

Скобки

Добавление скобок при вызове процедур и функций без параметров уже давно не является новинкой в Delphi, тем не менее, эта возможность мало известна. Эту возможность оценят по достоинству те программисты, которым приходится работать на двух языках (C++ и Delphi), так как им не нужно будет постоянно помнить о разнице в синтаксисе при вызове процедур и функций в разных языках. В Delphi оба варианта, приведенные ниже, считаются корректными.

Возможность перегрузки

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

procedure Test (I: integer); overload;
procedure Test (S: string); overload;
procedure Test (D: double); overload;

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

Передача параметров

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

Передача параметров по значению

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

procedure Test(s: string);

При вызове указанной процедуры будет создана копия передаваемой ей в качестве параметра строки s, с которой и будет работать процедура Test. При этом все внесенные в строку изменения никак не отразятся на исходной переменной s.

Однако это не относится к объектам. Например, если в функцию передается переменная (а точнее экземпляр объекта) TStringList, то в данном случае произойдет передача по ссылке (даже если это не указано явно). Этот способ передачи является у большинства самым излюбленным, но в тоже время является и самым не практичным, т.к. для выполнения метода выделяется дополнительная память для создания точной копией передаваемой переменой. Для решения этой проблемы следует использовать один из способов описанных ниже.

Передача параметров по ссылке

Pascal позволяет также передавать параметры в функции или процедуры по ссылке — такие параметры называются параметрами-переменными. Передача параметра по ссылке означает, что функция или процедура сможет изменить полученные значения параметров. Для передачи параметров по ссылке используется ключевое слово var, помещаемое в список параметров вызываемой процедуры или функции.

procedure ChangeMe(var x: longint);
begin
x := 2; // Параметр х изменен вызванной процедурой
end;

Вместо создания копии переменной x, ключевое слово var требует передачи адреса самой переменной x, что позволяет процедуре непосредственно изменять ее значение.

Передача параметров констант

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

procedure Test(const s: string );

Передача открытых массивов

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

function AddEmUp(A: array of integer): integer;

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

Для получения информации о фактически передаваемом массиве параметров в функции или процедуре могут использоваться функции High, Low и SizeOf.

Object Pascal также поддерживает тип array of const, который позволяет передавать в одном массиве данные различных типов. Синтаксис объявления функций или процедур, использующих такой массив для получения параметров, следующий:

procedure WhatHaveIGot( A: array of const );

Вызвать объявленную выше функцию можно, например, с помощью такого оператора:

procedure WhatHaveIGot( [‘Text’, 10, 5.5, @WhatHaveIGot, 3.14, true, ‘c’] );

При передаче функции или процедуре массива констант все передаваемые параметры компилятор неявно конвертирует в тип TVarRec. Тип данных TVarRec объявлен в модуле System следующим образом:

PVarRec = ^TVarRec;
TVarRec = record
case Byte of
vtInteger: (VInteger: Integer; VType: Byte);
vtBoolean: (VBoolean: Boolean);
vtChar: (VChar: Char);
vtExtended: (VExtended: PExtended);
vtString: (VString: PShortString);
vtPointer: (VPointer: Pointer);
vtPChar: (VPChar: PChar);
vtObject: (VObject: TObject);
vtClass: (VClass: TClass);
vtWideChar: (VWideChar: WideChar);
vtPWideChar: (VPWideChar: PWideChar);
vtAnsiString: (VAnsiString: Pointer);
vtCurrency: (VCurrency: PCurrency);
vtVariant: (VVariant: PVariant);
vtInterface: (VInterface: Pointer);
vtWideString: (VWideString: Pointer);
vtInt64: (VInt64: PInt64);
end;

Поле VType определяет тип содержащихся в данном экземпляре записи TVarRec данных и может принимать одно приведенных значений.

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

procedure WhatHaveIGot( A: array of const );
var
i: integer;
TypeStr: string;
begin
for i := Low(A) to High(A) do
begin
case A[i].VType of
vtInteger : TypeStr := ‘Integer’;
vtBoolean : TypeStr := ‘Boolean’;
vtChar : TypeStr := ‘Char’;
vtExtended : TypeStr := ‘Extended’;
vtString : TypeStr := ‘String’;
vtPointer : TypeStr := ‘Pointer’;
vtPChar : TypeStr := ‘PChar’;
vtObject : TypeStr := ‘Object’;
vt ;
vtW ;
vtPW ;
vtAnsiString : TypeStr := ‘AnsiString’;
vtCurrency : TypeStr := ‘Currency’;
vtVariant : TypeStr := ‘Variant’;
vtInterface : TypeStr := ‘Interface’;
vtW ;
vtInt64 : TypeStr := ‘Int64’;
end;
ShowMessage( Format( ‘Array item %d is a %s’, [i, TypeStr] ) );
end;
end;

Значения параметров по умолчанию

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

procedure HasDefVal( s: string; i: integer = 0 );

Подобное объявление означает, что процедура HasDefVal может быть вызвана двумя путями. В первом случае — как обычно, с указанием обоих параметров:

procedure HasDefVal( ‘Hello’, 26 );

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

procedure HasDefVal( ‘Hello’ );

При использовании значении параметров по умолчанию следует помнить о нескольких приведенных ниже правилах:

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

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

function Add( I1, I2: integer ): integer;
begin
Result := I1 + I2;
end;

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

function Add( I1, I2: integer; I3: integer = 0 ): integer;
begin
Result := I1 + I2 + I3;
end;

Директива

Директива <$X->запрещает вызов функций как процедур (с игнорированием возвращаемого результата). По умолчанию этот режим включен (<$X+>). Так вот, запомните, использование переменной Result недопустимо при сброшенном флажке опции Extended Syntax, расположенном во вкладке Compiler диалогового окна Project Options, или при указании директивы компилятора <$X->.

В каждой функции языка Objecl Pascal существует локальная переменная с именем Result, предназначенная для размещения возвращаемого значения. Кроме того, вернуть значение из функции можно также путем присвоения значения переменной, имеющей то же имя, что и данная функция. Это стандартный синтаксис языка Pascal, сохранившийся от его предыдущих версий. При использовании в теле функции переменной с ее именем не забывайте, что существуют большие отличия в обработке этого имени — все зависит от того, где она расположена — в левой части оператора присвоения или же в любом другом месте текста функции. Если имя функции указано в левой части оператора присвоения, то предполагается, что назначается возвращаемое функцией значение. Во всех других случаях предполагается, что осуществляется рекурсивный вызов этой функции.

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

ReplaceDate — Процедура Delphi

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

Вообще, существует методика программирования «сверху вниз». Методика программирования «сверху вниз» разбивает задачу на несколько более простых, которые оформляются в виде подпрограмм. Те, в свою очередь, при необходимости также делятся до тех пор, пока стоящие перед программистом проблемы не достигнут приемлемого уровня сложности (то есть простоты!). Таким образом, эта методика программирования облегчает написание программ за счёт создания так называемого скелета, состоящего из описателей подпрограмм, которые в дальнейшем наполняются конкретными алгоритмами. Пустое описание подпрограммы иначе называется «заглушкой».

И процедуры, и функции позволяют добиться одинаковых результатов. Но разница всё же есть.

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

Функция Delphi также позволяет выполнить всё перечисленное, но дополнительно возвращает результат в присвоенном ей самой значении. То есть вызов функции может присутствовать в выражении справа от оператора присваивания. Таким образом, функция — более универсальный объект!

Описание подпрограммы состоит из ключевого слова procedure или function, за которым следует имя подпрограммы со списком параметров, заключённых в скобки. В случае функции далее ставится двоеточие и указывается тип возвращаемого значения. Обычная точка с запятой далее — обязательна! Сам код подпрограммы заключается в «логические скобки» begin/end. Для функции необходимо в коде присвоить переменной с именем функции или специальной зарезервированной переменной Result (предпочтительно) возвращаемое функцией значение. Примеры:

function Имя_функции(параметры): тип_результата;
begin
Код функции;
Result:= результат;
end;

procedure Имя_процедуры(параметры);
begin
Код процедуры;
end;

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

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

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

Теперь пример. Напишем программу суммирования двух чисел. Она будет состоять из Формы, на которой будет кнопка (компонент Button), по нажатию на которую будет выполняться наша подпрограмма, и двух строк ввода (компоненты Edit), куда будем вводить операнды. Начнём с процедуры.

var
Form1: TForm1;
A, B, Summa: Integer;
procedure Sum(A, B: Integer);

procedure TForm1.Button1Click(Sender: TObject);
begin
A:=StrToInt(Edit1.Text);
B:=StrToInt(Edit2.Text);
Sum(A, B);
Caption:=IntToStr(Summa);
end;

procedure Sum(A, B: Integer);
begin
Summa:=A+B;
end;

Наша процедура находится после обработчика нажатия кнопки, где осуществляется её вызов. И программа работает именно потому, что заголовок процедуры вынесен в блок описания данных. Но всё же операция суммирования в данном случае производится как-то невнятно.
Теперь сделаем то же самое с помощью функции.

var
Form1: TForm1;
A, B, Summa: Integer;
function Sum(A, B: Integer): Integer;

procedure TForm1.Button1Click(Sender: TObject);
begin
A:=StrToInt(Edit1.Text);
B:=StrToInt(Edit2.Text);
Summa:=Sum(A, B); // На мой взгляд, сейчас более понятно, откуда что берётся
Caption:=IntToStr(Summa);
end;

function Sum(A, B: Integer): Integer;
begin
Result:=A+B;
end;

Есть особенности в использовании в качестве параметров больших по объёму структур данных, например, массивов, состоящих из нескольких тысяч (и больше) элементов. При передаче в подпрограмму данных большого объёма могут быть большие расходы ресурсов и времени системы. Поэтому используется передача не самих значений элементов (передача «по значению», как в предыдущих примерах), а ссылки на имя переменной или константы (передача «по имени»). Достигается это вставкой перед теми параметрами, которые мы хотим передать по имени, ключевого слова var.

function Sum(A, B: Integer; var Arr: array[1..1000000] of Integer): Integer;

Если взглянуть на описание нашей подпрограммы и описание обработчика нажатия кнопки (это тоже подпрограмма!), который был создан Delphi, то видим, что перед именем обработчика (Button1Click) стоит TForm1. Как мы знаем, в Delphi точкой разделяется объект и его атрибуты (свойства и методы). Таким образом, Delphi создаёт Button1Click как метод объекта Form1. Причём, буква T перед объектом говорит о том, что Button1Click не просто метод объекта, а метод класса объекта. Не будем этим пока заморачиваться, а просто будем поступать также. Описав свою процедуру или функцию как метод класса TForm1, мы получаем возможность использовать в ней объекты класса без указания его имени, что гораздо удобнее. То есть, если мы используем в нашей подпрограмме какие-либо компоненты, размещённые на Форме (например, Button1), то мы пишем

Button1.W >
а не
Form1.Button1.W >

Также появляется возможность использовать встроенные переменные, такие как параметр Sender. В каждом обработчике этот объект указывает на источник, то есть тот объект, который вызывает данную подпрограмму. Например, в нашей процедуре суммирования Sender = Button1. Проанализировав эту переменную, можно принять решение о тех или иных действиях.

Описав подпрограмму как метод класса, её описание мы должны поместить туда же, куда их помещает описание класса TForm1. Смотрите сами, где находится описание процедуры Button1Click. Для этого, поставив курсор внутрь подпрограммы Button1Click, нажмите CTRL+Shift и кнопку управления курсором «Вверх» или «Вниз» одновременно. Произойдёт переход к описанию подпрограммы (чтобы вернуться обратно, повторите это действие ещё раз). Ставьте описание своей подпрограммы рядом, с новой строки. Обратите внимание, что TForm1 уже не пишется.

Рекурсия — важное и мощное свойство процедур и функций в Delphi. Рекурсия это возможность подпрограммы в процессе работы обращаться к самой себе. Без использования рекурсии приходилось бы применять циклы, а это усложняет чтение программы. Рекурсивный вызов подпрограммы сразу проясняет смысл происходящего. Естественно, приходится следить за тем, чтобы в подпрограмме обязательно было условие, при выполнении которого дальнейшая рекурсия прекращается, иначе подпрограмма зациклится.

Пример. Вычисление факториала

Вычисление факториала — классическая в программировании задача на использование рекурсии. Факториал числа N — результат перемножения всех чисел от 1 до N (обозначается N!):

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

Удобство применения рекурсии особенно наглядно при вычислении дискриминанта матрицы. Дискриминант матрицы можно подсчитать методом Гаусса — приведением матрицы к треугольному виду, что требует использования нескольких вложенных циклов. Алгоритм получается достаточно громоздкий. Используя вместо этого рекурсию, получается очень элегантный алгоритм: вычисление дискриминанта матрицы с использованием рекурсии.

Процедуры Delphi

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

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

Процедура Delphi – группа операторов объединенных вместе под одним именем.

Из чего состоит процедура?

  1. Ключевое слово procedure
  2. Имя процедуры
  3. Список параметров
  4. Тело процедуры (Та самая группа операторов)

Приведу пример процедуры:

Этот простейший Del p hi код принимает целочисленное значение. Если это значение равно 1, 2 или 5, то выводим соответствующее сообщение. Иначе сообщаем, что введенное число не равно ни одному из списка.

Рассмотрим как нам это использовать. Создайте новый проект и разместите на нем всего одну кнопку. По клику на неё будем вызывать MyProc c параметром 5 :

Код программы целиком у меня получился такой:

Теперь в двух словах расскажу для чего нужны процедуры Делфи и какие плюсы от их использования. Если мы часто повторяющиеся фрагменты кода выделим в процедуру и дадим ей информативное имя – получим следующие преимущества:

  1. Код станет короче
  2. Читаться программа будет проще
  3. Редактировать логику приложения не составит труда

Я рекомендую Вам использовать процедуры 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) при А В

Регистрация компонента в среде Delphi

Регистрация компонента необходима для размещения компонента в палитре компонентов.

Перед регистрацией модуль компонента нужно сохранить.

При использовании эксперта компонентов для создания нового компонента Delphi самостоятельно создает процедуру регистрации компонента в модуле-заготовке. Создателю компонента в данном случае ничего не нужно более делать, кроме выполнения следующих шагов:

1. Выбрать пункт меню Component/Install Component. Появится диалог, как на рис. 6.

Рис. 6. Диалог установки нового компонента.

2. Далее нужно в поле Unit file name указать модуль, содержащий процедуру регистрации и в поле Package file name указать имя пакета, в который устанавливается компонент (выбираем пакет dclusr.dpk в котором содержатся пользовательские компоненты). Нажать «OK».

После успешной перекомпиляции новый объект появится в палитре.

Если же вы создаете компонент без использования эксперта компонентов, вам придется самостоятельно дописывать процедуру регистрации компонента. В разделе interface модуля компонента нужно дописать строку:

А в разделе implementation добавить процедуру регистрации, например:

RegisterComponent (‘Samples’, [TMyComponent]);

В результате, компонент с именем TMyComponent будет размещен на вкладке Samples палитры компонентов.

Не нашли то, что искали? Воспользуйтесь поиском:

Лучшие изречения: Как то на паре, один преподаватель сказал, когда лекция заканчивалась — это был конец пары: «Что-то тут концом пахнет». 8373 — | 8006 — или читать все.

188.64.174.135 © studopedia.ru Не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования. Есть нарушение авторского права? Напишите нам | Обратная связь.

Отключите adBlock!
и обновите страницу (F5)

очень нужно

DelphiComponent.ru — бесплатно видеоуроки по Delphi, статьи, исходники

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

Посмотрите видеоурок по процедурам и функциям (подпрограммы):

Скачайте бесплатно видеокурс Мастер Delphi Lite прямо сейчас — в нем больше видеоуроков — СКАЧАТЬ БЕСПЛАТНО!

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

Использование процедур Write и WriteLn действительно не представляет особой сложности, поскольку они встроены в компилятор Delphi. Компилятор содержит лишь небольшое количество встроенных процедур. Большинство процедур и функций можно найти в отдельных исходных файлах, называемых модулями. Все модули Delphi имеют расширение . pas.

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

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

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

Показать скрытое содержание
unit Unit1;
interface
implementation
end.

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