Записи Delphi

Дата публикации

Здравствуйте. Сегодня мы познакомимся с записями Delphi. Записи, они же структуры в С++ это удобный способ хранения и обработки информации.

 Объявление записи

В Delphi запись определяется следующим образом.

type
    MyRecord = Record
    MyString : String;
    MyInt : integer;
end;

Мы оюбъявили запись MyRecord с двумя полями: 

  • текстовым - MyString
  • целочисленным - MyInt

Записи по природе своей напоминают объекты, которые не имеют событий и методов, только свойства.

Применение записей Delphi

Записи в Delphi помогают решить некоторые вопросы без лишних усилий. Частенько приходится использовать массивы записей. Давайте разберем пример. Мы создадим структуру в которой будем хранить название месяца и количество дней. После мы объявим массив структур и заполним его. Наша программа будет выводить название месяца и количество дней по порядковому номеру.

Я набросал форму будущей программы, у меня получилось примерно так:

Delphi record

На форме расположены элементы:

  • TEdit 
  • TUpDown (Максимальное значение 12, минимальное значение 1, привязан к TEdit)
  • TBUtton
  • Tlabel - 4 шт.

Код модуля с комментариями:

unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, StdCtrls;
type
  TFMon = class(TForm)
    ENum: TEdit;
    UpDNum: TUpDown;
    BSearch: TButton;
    LMon: TLabel;
    LMonValue: TLabel;
    Lcount: TLabel;
    LCountValue: TLabel;
    procedure BSearchClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  TMon = record
    Name: string; // Название месяца
    daycount: integer; // Количество дней
  end;
var
  FMon: TFMon;
implementation
{$R *.dfm}
procedure TFMon.BSearchClick(Sender: TObject);
var
  Amon: array [1 .. 12] of TMon;
  // Объявили <a href="/studentam/delphi/127-delphi-massivy">массив</a> записей, номер элемента массива будет совпадать с порядковым номером месяца
begin
  // Заполним массив
  Amon[1].Name := 'Январь';
  Amon[1].daycount := 31;
  Amon[2].Name := 'Февраль';
  Amon[2].daycount := 28;
  Amon[3].Name := 'Март';
  Amon[3].daycount := 31;
  Amon[4].Name := 'Апрель';
  Amon[4].daycount := 30;
  Amon[5].Name := 'Май';
  Amon[5].daycount := 31;
  Amon[6].Name := 'Июнь';
  Amon[6].daycount := 30;
  Amon[7].Name := 'Июль';
  Amon[7].daycount := 31;
  Amon[8].Name := 'Август';
  Amon[8].daycount := 31;
  Amon[9].Name := 'Сентябрь';
  Amon[9].daycount := 30;
  Amon[10].Name := 'Октябрь';
  Amon[10].daycount := 31;
  Amon[11].Name := 'Ноябрь';
  Amon[11].daycount := 30;
  Amon[12].Name := 'Декабрь';
  Amon[12].daycount := 31;
  // Выводим результат
  LMonValue.Caption := Amon[StrToInt(ENum.Text)].Name;
  LCountValue.Caption := Inttostr(Amon[StrToInt(ENum.Text)].daycount);
end;
end.

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



Обновить

Monday the 23rd. icq 486350790
Copyright 2012

©