writeln(‘Марка Объем двигателя Мощность Скорость ’);
{Открывается файл для чтения данных}
for i:=1 to n do
begin
read(f1, c1); {Считываются данные из файла}
write(c1.mark:15, c1.volume:10, c1.power:10, c1.speed:10);
writeln();
end;
readln;
end.
Внешний вид формы в Delphi
В конструкторе | При выполнении |
|
|
Код программы в среде Delphi
Оформление меню окна осуществляется с помощью компонента MainMenu (закладка Standart). Щелчок по этому компоненту, расположенному уже на форме, вызывает открытие окна-конструктора меню.

Работа с файлами осуществляется с помощью компонентов OpenDialog и SaveDialog (закладка Dialogs) – открытие и загрузка в файл соответственно.
{полный код модуля}
unit uFile;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, Grids;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
OpenDialog1: TOpenDialog;
SaveDialog1: TSaveDialog;
procedure N3Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure N4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
cars = record {Тип записи}
mark: string[15];
volume, power, speed:real;
end;
var
Form1: TForm1;
F: file of cars; {Файл записи}
r: cars; {Одна запись}
N: integer; {Количество записей}
implementation
{$R *.dfm}
procedure TForm1.N3Click(Sender: TObject);
begin
{выполнение стандартного диалога "Open File" - загрузить из файла}
if OpenDialog1.Execute then
begin
AssignFile(F, OpenDialog1.FileName);
{F - название выбранного диалогом файла (свойство FileName объекта OpenDialig1)}
Reset(F);
N :=0; {Читаем с самого начала}
{Считываем все записи из файла}
while not eof(F) do
begin
{В переменную N считываем текущую запись}
Read(F, r);
{Марка помещается в первый столбец таблицы}
StringGrid1.Cells[0, N+1] :=r. mark;
{Объем двигателя - во второй столбец}
StringGrid1.Cells[1, N+1] :=FloatToStr(r. volume);
{Мощность - в третий столбец}
StringGrid1.Cells[2, N+1] :=FloatToStr(r. power);
{Скорость - в четвертый столбец}
StringGrid1.Cells[3, N+1] :=FloatToStr(r. speed);
{Увеличиваем общее число записей}
N := N+1;
end;
CloseFile(F); {Закрываем файл}
end;
end;
procedure TForm1.N2Click(Sender: TObject);
var i: integer;
begin
{выполнение стандартного диалога "Save File" - сохранение в файл}
if SaveDialog1.Execute then
begin
AssignFile(F, SaveDialog1.FileName);
Rewrite(F);
i:=1;
while StringGrid1.Cells[3, i] <>'' do
begin
r. mark := StringGrid1.Cells[0, i];
r. volume := StrToFloat(StringGrid1.Cells[1, i]);
r. power := StrToFloat(StringGrid1.Cells[2, i]);
r. speed := StrToFloat(StringGrid1.Cells[3, i]);
Write (F, r);
i := i+1;
end;
CloseFile(F);
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
{Заполняем заголовок таблицы}
StringGrid1.Cells[0, 0] := 'Марка';
StringGrid1.Cells[1, 0] := 'Объем двигателя';
StringGrid1.Cells[2, 0] := 'Мощность';
StringGrid1.Cells[3, 0] := 'Скорость';
end;
procedure TForm1.N4Click(Sender: TObject);
{закрытие программы, кнопка Выход главного меню}
begin
close();
end;
end.
Лабораторная работа №16
Используя файловый тип данных, создать файл записей, который будет содержать данные об объектах, заданные в соответствующем варианте предыдущей лабораторной работы (лабораторная работа №15 без выполнения поиска). Вывести содержимое файла на экран. Выполнить два варианта: один – в среде Pascal, другой – в среде Delphi.
Действия с файлами
Чтобы найти нужный элемент файла, необходимо последовательно просмотреть все предыдущие элементы. Это называется последовательный доступ к файлу.
Пример
Используя файл, созданный в прошлом примере, вывести на экран все автомобили, чья максимальная скорость >150 км/ч.
Код программы в среде Pascal
program Cars;
uses Crt;
type cars – record
mark: string[15];
volume, power, speed : real;
end;
myfile = file of cars;
var f1: myfile;
i, n :integer
a1: cars;
begin
clrscr;
assign(f1, ‘d:\cars’);
{Открываем файл для считывания данных}
reset(f1);
while not eof(f1) do {Выполнять пока не достигнут конец файла}
begin
read(f1, c1); {Считываются данные из файла}
if c1.speed > 150 then
write(c1.mark:15, c1.volume:10, c1.power:10, c1.speed:10);
end;
readln;
|
Из за большого объема этот материал размещен на нескольких страницах:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |




