Работа с файлами - Free Pascal (186)
Формулировка задачи:
Есть один созданный файл с именами клиентов. Необходимо создать второй файл с 3-мя записями, при этом, чтобы в записи "Номер клиента" было число, соответствующее порядковому номеру имени клиента из 1-го файла, т.е. предусматривалась проверка, что такой клиент вообще существует в файле 1. Как это организовать?
Решение задачи: «Работа с файлами»
textual
Листинг программы
- type
- TNameStr = String[31];
- TDate = String[8];
- TClient = record
- Name: TNameStr;
- {...}
- end;
- TPurchess = record
- Date: TDate;
- Value: Real;
- Client: Integer;
- end;
- var
- fc: file of TClient;
- fp: file of TPurchess;
- Clients: array [1..10] of TClient;
- ClientCnt: Integer;
- p: TPurchess;
- begin
- Assign(fc,'file1.bin'); Reset(fc);
- while not EoF(fc) and (ClientCnt<High(Clients)) do begin
- Inc(ClientCnt); Read(fc,Clients[ClientCnt]);
- end;
- Close(fc); {$I-}
- Assign(fp,'file2.bin'); Reset(fp);
- if IOResult<>0 then Rewrite(fp);
- Seek(fp,FileSize(fp));
- with p do
- repeat
- Write('Дата: '); ReadLn(Date);
- if Date='' then Break;
- Write('Сумма: '); ReadLn(Value);
- repeat
- Write('Номер клиента: '); ReadLn(Client);
- if (Client>=Low(Clients)) and (Client<=ClientCnt) then begin
- WriteLn('Клиент: ',Clients[Client].Name);
- Break;
- end else WriteLn('*** Ошибочный номер клиента');
- until False;
- if not (Date='') then Write(fp,p);
- until Date='';
- Close(fp);
- end.
Объяснение кода листинга программы
- Объявление типов данных: TNameStr (строка 31 символа), TDate (строка 8 символов), TClient (запись с полями Name типа TNameStr), TPurchess (запись с полями Date типа TDate, Value типа Real и Client типа Integer)
- Создание файлов fc и fp для работы с данными типов TClient и TPurchess соответственно
- Объявление массива Clients типа TClient на 10 элементов и переменной ClientCnt типа Integer
- Чтение данных из файла fc в массив Clients до тех пор, пока не закончится файл или не заполнится 10 элементов массива Clients
- Закрытие файла fc
- Открытие файла fp для записи
- Если файл fp не может быть открыт, то его создание и перезапись
- Перемещение позиции чтения файла fp в конец файла
- Ввод данных о дате, сумме и номере клиента с помощью функций ReadLn
- Проверка корректности номера клиента путем сравнения со значениями Low и ClientCnt
- Запись данных в файл fp
- Закрытие файла fp
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д