Иллюстрированный самоучитель по Delphi 7 для начинающих

Инструкция case

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

Например, в зависимости от числового значения поясняющий текст к денежной величине может быть: "рубль", "рублей" или "рубля" (123 рубля, 120 рублей, 121 рубль). Очевидно, что окончание поясняющего слова определяется последней цифрой числа, что отражено в табл. 2.8.

Таблица 2.8. Зависимость окончания текста от последней цифры числа.

Цифра Поясняющий текст
0, 5, 6, 7, 8, 9 Рублей
1 Рубль
2.3.4 Рубля

Приведенное в таблице правило имеет исключение для чисел, оканчивающихся на 11, 12, 13, 14. Для них поясняющий текст должен быть "рублей".

Диалоговое окно программы приведено на рис. 2.12, а текст – в листинге 2.4. Поясняющий текст формирует процедура обработки события onKeyPress.

Иллюстрированный самоучитель по Delphi 7 для начинающих › Управляющие структуры языка Delphi › Инструкция case
Рис. 2.12. Диалоговое окно программы

Листинг 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.
Если Вы заметили ошибку, выделите, пожалуйста, необходимый текст и нажмите CTRL + Enter, чтобы сообщить об этом редактору.