Показать сообщение отдельно
  #2  
Старый 12.03.2008, 17:35
Rosenkrantz Rosenkrantz вне форума
Активный
 
Регистрация: 04.12.2007
Адрес: Москва
Сообщения: 234
Версия Delphi: Delphi 7
Репутация: 40
По умолчанию

Приблизительно могу сказать, что работа с типизированными файлами очень проста. Определяете нужный вам тип и данные этого типа пишите и читаете в файл/из файла. Вот примерно так:
Код:
program Project1;

{$APPTYPE CONSOLE}

uses
  SysUtils;

type
  TRegData = record
    FlyNo: String[10];
    FlyDate: TDateTime;
    Destination: String[50];
    PassengerName: String[100];
    LuggageWeight: Double;
  end;

const
  FILE_NAME = 'c:\typedfile.bin';

var
  F: File Of TRegData;
  R1, R2: TRegData;
begin
  // -- Это запись в файл ------------------------------------------------------
  // Открываем файл на запись
  AssignFile(F, FILE_NAME);
  Rewrite(F);
  // Заполняем запись
  R1.FlyNo := 'A100';
  R1.FlyDate := StrToDate('01.01.2008');
  R1.Destination := 'Зимбабве';
  R1.PassengerName := 'Иванов Иван Иванович';
  R1.LuggageWeight := 6.3;
  // Записываем ее в файл
  Writeln(F, R1);
  // Закрываем файл

  // -- Это чтение из файла ----------------------------------------------------
  // Открываем файл на чтение
  AssignFile(F, FILE_NAME);
  Reset(F);
  // Считываем запись
  // Теперь в записях R1 и R2 одинаковые значения
  Readln(F, R2);
  // Закрываем файл
  CloseFile(F);
end.
Для обработки нескольких записей вам нужно будет в программе завести массив записей типа TRegData
Код:
var
  Data: Array [0..200] Of TRegData;
(200 - это количество записей. Для учебного примера вполне достаточно) и организовать циклы:
1) Ввода данных с подсчетом количества заполненных позиций в массиве
2) Записи данных в файл
3) Чтения данных из файла
4) Подсчета веса пассажиров и багажа для выбранного рейса

Цикл записи в файл будет примерно такой:
Код:
...
AssignFile(F, FILE_NAME);
Rewrite(F);
for i := 0 to PassengerCount - 1 do
  Writeln(F, Data[i]);
...

Цикл чтения:
Код:
...
AssignFile(F, FILE_NAME);
Reset(F);
i := 0;
while not EOF(F) do begin
  Readln(F, Data[i]);
  i := i + 1;
end;
PassengerCount := i;
...

После того, как данные введены (или считаны из файла) нужно запросить пользователя, какой рейс (номер, дата) его интересует. Пользователь вводит номер рейса и дату, вы подсчитываете в цикле вес и вычисляете, сколько останется от заявленной грузоподъемности самолета, если все эти толстые пассажиры, по 100 килограмм каждый, займут свои места.

Вот, если приблизительно, то так.
Ответить с цитированием