Формирование поясняющего текста
Листинг 2.4. Формирование поясняющего текста
unit. rub_l; interface
uses
Windows, Messages, SysUtils,
Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm) Label1: TLabel;
Editl: TEdit; Label2: TLabel;
procedure EditlKeyPress(Sender: TObject; var Key: Char);
private
{ Private declarations } public
{ Public declarations } end;
var
Form1: TForm1;
implementation
{$R *.dfm}
// нажатие клавиши
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char) var
n : integer; // число
r : integer; // остаток от деления n на 10
text: string[10]; // формируемый поясняющий текст
begin
if Key = chr(VK_RETURN) then
begin
n := StrToInt(Editl.Text);
if n >
100
then n:=n mod 100;
if (n >
= 11) and (n <= 14) then
text:=' рублей' else begin
r:= n mod 10; case r of
1: text:=' рубль'; 2 .. 4: text:=' рубля';
else text:=' рублей';
end;
end;
Label2.Caption := IntToStr(n)+ text; end;
end;
end.
Рассмотрим фрагмент программы (листинг 2.5), которая вычисляет дату следующего дня, используя сегодняшнюю дату, представленную тремя переменными: day (день), month (месяц) и year (год).
Сначала с помощью инструкции сазе проверяется, является ли текущий день последним днем месяца. Если текущий месяц — февраль и если текущее число — 28, то дополнительно выполняется проверка, является ли год високосным. Для этого вычисляется остаток от деления года на 4. Если остаток равен нулю, то год високосный, и число 28 не является последним днем месяца.
Если выясняется, что текущий день — последний день месяца, то следующее число — первое. Затем проверяется, не является ли текущий месяц декабрем. Если нет, то увеличивается номер месяца, а если да, то увеличивается номер года, а номеру месяца присваивается значение 1.