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

Объявление и работа с массивами целых чисел в полях записи на Pascal

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

Статья:

Вопрос пользователя касается возможности использования массивов целых чисел как поля в записи (record) в языке программирования Delphi, который использует Object Pascal. В частности, интересует возможность чтения данных из текстового файла в массив записей, где часть данных представлена оценками за программы и тесты.

Описание структуры записи

Для начала рассмотрим пример объявления записи stype, которая включает в себя поля с данными о студенте, включая массивы целых чисел для оценок за программы (prog) и тесты (test):

Tnametype = record
  first: string[10];
  mi: string[3];
  last: string[30];
end;

Tstype = record
  id: integer;
  name: Tnametype;
  prog: array[1..10] of integer;
  test: array[1..3] of integer;
  progave, quizave: real;
  average: double;
  grade: char;
end;

Tsarraytype = array[1..100] of stype;
var
  student: Tsarraytype;

Чтение данных из файла

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

procedure TStudentData.OpenButtonClick(Sender: TObject);
begin
  var i: integer;
  if OpenDialog.Execute then
  begin
    AssignFile(InfFile, OpenDialog.FileName);
    Reset(InfFile);
    i := 0;
    while not Eof(InfFile) do
    begin
      Inc(i);
      if i > High(student) then Break;
      with student[i] do
        begin
          Readln(InfFile, id, name.first[1], name.mi[1], name.last[1]);
          // Чтение массивов оценок
          for j := Low(prog) to High(prog) do
            Readln(InfFile, prog[j]);
          for j := Low(test) to High(test) do
            Readln(InfFile, test[j]);
        end;
    end;
  end;
end;

Запись данных в файл

Для записи массивов оценок в текстовый файл также используется циклический подход с использованием Writeln:

procedure TStudentData.SaveButtonClick(Sender: TObject);
begin
  if SaveDialog.Execute then
  begin
    AssignFile(Outf, SaveDialog.FileName);
    Rewrite(Outf);
    for i := Low(student) to High(student) do
      with student[i] do
        begin
          Writeln(Outf, id:4, name.first, name.mi, name.last);
          // Запись массивов оценок
          for j := Low(prog) to High(prog) do
            Writeln(InfFile, prog[j]:5);
          for j := Low(test) to High(test) do
            Writeln(Outf, test[j]:5);
        end;
    Close(Outf);
  end;
end;

Пример использования

Как было показано в подтвержденном ответе, массивы целых чисел могут быть инициализированы и использованы без каких-либо проблем:

var
  a: Tsarraytype;
  i, j: Integer;
begin
  for i := Low(a) to High(a) do
    begin
      for j := Low(a[i].test) to High(a[i].test) do
        a[i].test[j] := i * 100 + j; // Инициализация значений
      // ... другие операции ...
    end;
end;

Вывод

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

Создано по материалам из источника по ссылке.

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


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

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




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-07-02 09:46:24/0.0064029693603516/0