Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Добавление записи в файл

Delphi , Синтаксис , Записи и Множества

Добавление записи в файл


unit apprec_;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Edit1: TEdit; // спортсмен
    ComboBox1: TComboBox; // страна
    ComboBox2: TComboBox; // вид спорта
    RadioGroup1: TRadioGroup; // медаль
    Button1: TButton; // кнопка Добавить
    Label5: TLabel;
    Label4: TLabel;
    procedure FormActivate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  // тип медали
  TKind = (GOLD, SILVER, BRONZE);

  // запись файла
  TMedal = record
    country: string[20]; //  страна
    sport: string[20]; //  вид спорта
    person: string[40]; //  спортсмен
    kind: TKind; //  медаль
  end;

var
  Form1: TForm1;
  f: file of TMedal; // файл записей - база данных

implementation

{$R *.DFM}

// активизация формы

procedure TForm1.FormActivate(Sender: TObject);
var
  resp: word; // ответ пользователя
begin
  AssignFile(f, 'a:\medals.db');
{$I-}
  Reset(f); // открыть файл
  Seek(f, FileSize(f)); // указатель записи в конец файла
{$I+}
  if IOResult = 0
    then button1.enabled := TRUE // теперь кнопка Добавить доступна
  else
  begin
    resp := MessageDlg('Файл базы данных не найден.' +
      'Создать новую БД?', mtInformation, [mbYes, mbNo], 0);
    if resp = mrYes then
    begin
{$I-}
      rewrite(f);
{$I+}
      if IOResult = 0
        then button1.enabled := TRUE
      else ShowMessage('Ошибка создания файла БД.');
    end;
  end;
end;

// щелчок на кнопке Добавить

procedure TForm1.Button1Click(Sender: TObject);
var
  medal: TMedal;
begin
  with medal do
  begin
    country := ComboBox1.Text;
    sport := ComboBox2.Text;
    person := Edit1.Text;
    case RadioGroup1.ItemIndex of
      0: kind := GOLD;
      1: kind := SILVER;
      2: kind := BRONZE;
    end;
  end;
  write(f, medal); // записать содержимое полей записи в файл
end;

// завершение работы программы

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  CloseFile(f); // закрыть файл
end;

end.
Скачать весь проект

Перевод контента на русский язык:

Этот проект Delphi добавляет записи в файловую базу данных, когда пользователь кликает кнопку "Добавить" на форме. Вот разбивка кода:

Form1 Форма имеет несколько компонентов: три лейбла, два комбо-бокса, один текстовый редактор, одна группа радио-кнопок и одна кнопка. Комбо-боксы позволяют пользователю выбрать страну и спорт, а текстовый редактор позволяет ввести имя атлета. Группа радио-кнопок имеет три опции для медалей (золото, серебро, бронза). Кнопка используется для добавления новой записи в базу данных.

TMedal Это тип записи, представляющий собой одиночную запись в базе данных. Он имеет четыре поля:

  • country: строковое поле для страны
  • sport: строковое поле для спорта
  • person: строковое поле для имени атлета
  • kind: перечислительный тип (TKind) для типа медали (золото, серебро, бронза)

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

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

FormClose Процедура вызывается, когда форма закрывается. Она закрывает файл.

Предложения по улучшению 1. Обработка ошибок: код не обрабатывает ошибки должным образом. Например, если файл не может быть открыт или записан, программа будет завершаться аномально. 2. Валидация данных: код предполагает, что пользователь вводит корректные данные. Может быть полезно добавить проверки для обеспечения корректности ввода (например, проверка выбранного значения в комбо-боксе). 3. Формат файла: формат файла не указан, что может сделать чтение или изменение данных позднее сложным. 4. Управление базой данных: если база данных растет, может быть полезно использовать более robust систему управления базами данных, такие как реляционная система управления базами данных (RDBMS) вместо простого текстового файла.

Вот пример улучшения обработки ошибок:

procedure TForm1.Button1Click(Sender: TObject);
begin
  with medal do
  begin
    country := ComboBox1.Text;
    sport := ComboBox2.Text;
    person := Edit1.Text;
    case RadioGroup1.ItemIndex of
      0: kind := GOLD;
      1: kind := SILVER;
      2: kind := BRONZE;
    end;
  end;

  try
    write(f, medal);
  except
    on EWriteError do
      ShowMessage('Ошибка записи в файл!');
  end;
end;

В этом коде используется блок try-except, чтобы поймать любые ошибки, которые могут возникнуть при записи в файл. Если возникает ошибка, отображается сообщение об ошибке.

В статье описывается добавление записи в файл, используя Turbo Pascal.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


:: Главная :: Записи и Множества ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 11:43:01/0.0061531066894531/1