Memo1.Lines.Add('Open to file>> Данные загружены из файла: '+nameFile);
// чтение из файла
while not EOF(f) do
begin // прочитать строку из файла
new(car);// выделить память для элемента списка
// Чтение из файла выполняется при помощи инструкций readin
readln(f, car^.markaCar_);
readln(f, car^.modelCar_);
readln(f, car^.typBasketCar_);
readln(f, car^.volumeEngineCar_);
readln(f, car^.maxPowerCar_);
readln(f, car^.consuptionFuelCar_);
// формируем строку содержащую все сведения об автомобиле
s:='Add >> '+car^.markaCar_+' '+car^.modelCar_+' /'+car^.typBasketCar_+' /';
s:=s+FloatToStr(car^.volumeEngineCar_)+'л /'+IntToStr(car^.maxPowerCar_)+'лс /';
s:=s+IntToStr(car^.consuptionFuelCar_)+'л/100';
// добавляем ее в Memo
Memo1.Lines.Add(s);
//Вызываем процидуру добавления в конец списка
AddEndList();
end;
CloseFile(f); // закрыть файл
end;
end;
end;
procedure TForm1.N4Click(Sender: TObject);//записать содержимое списка в файл
var
nameFile: string; //переменная для хранения имени файла
f: TextFile; // файл записей — база данных
//f: file of TCar; // файл записей — база данных
begin
if SaveDialog1.Execute then //диалог сохранения файла
begin
car:=carBegin;//устанавливаем указатель на начало списка
nameFile:=SaveDialog1.FileName; //получить имя файла
AssignFile(f, nameFile); //связать файловую переменную с конкретным файлом
Rewrite(f); // открыть для перезаписи
// запись в файл
while car<>nil do
begin // записать содержимое списка в файл
writeln(f, car^.markaCar_);
writeln(f, car^.modelCar_);
writeln(f, car^.typBasketCar_);
writeln(f, car^.volumeEngineCar_);
writeln(f, car^.maxPowerCar_);
writeln(f, car^.consuptionFuelCar_);
car:=car^.next_;// переходим к следующему элементу списка
end;
CloseFile(f); // закрыть файл
MessageDlg('Данные записаны в файл '+ nameFile,mtInformation,[mbOk],0);
Memo1.Lines.Add('Save to file>> Данные записаны в файл: '+nameFile);
end;
end;
procedure TForm1.ActionAddBeginListExecute(Sender: TObject);//Добавить в начало списка
var
s: string;// строка для получения записи об автомобиле
begin // проверка на заполнение полей
if (Length(EditMarkaCar.Text)=0)or (Length(EditModelCar.Text)=0)or
(Length(EditTypBasketCar.Text)=0)or (Length(EditVolumeEngineCar.Text)=0)or
(Length(EditMaxPowerCar.Text)=0)or (Length(EditConsuptionFuelCar.Text)=0)then
ShowMessage('Все поля должны быть заполнены!!!')
else
begin
new(car);// выделить память для элемента списка
// получаем от пользователя:
car^.markaCar_ :=EditMarkaCar.Text; // Марка
car^.modelCar_ :=EditModelCar.Text; // Модель
car^.typBasketCar_ :=EditTypBasketCar.Text; // Тип кузова
car^.volumeEngineCar_ :=StrToFloat(EditVolumeEngineCar.Text); //Oбъем двигателя
car^.maxPowerCar_ :=StrToInt(EditMaxPowerCar.Text); // Максимальная мощность
car^.consuptionFuelCar_ :=StrToInt(EditConsuptionFuelCar.Text); // Расход топлива в городе,л/100 км (на новой машине!)
//Вызываем процидуру Добавить в начало списка
AddBeginList();
// формируем строку содержащую все сведения об автомобиле
s:='Add begin list>> '+car^.markaCar_+' '+car^.modelCar_+' /'+car^.typBasketCar_+' /';
s:=s+FloatToStr(car^.volumeEngineCar_)+'л /'+IntToStr(car^.maxPowerCar_)+'лс /';
s:=s+IntToStr(car^.consuptionFuelCar_)+'л/100';
// добавляем ее в Memo
Memo1.Lines.Add(s);
end;
end;
procedure TForm1.ActionSortExecute(Sender: TObject);//Сортировка записей по одному из полей
var
car2,car1: PCar;// указатели используемые при сортировке
bool: Boolean; // переменная которая принимает значение True, если выражение в IF истинно.
begin
bool:=false;// первоначальное состаяние
//устанавливаем указатели на начало списка
car1:=carBegin;
// проверка на наличие в массиве хотя бы одного автомобиля
if carBegin = nil then
ShowMessage('В базе нет не одной записи!!!')
else
begin
While car1<>nil do // цикл While по всем автомобилям
begin
car2:=car1;
While car2<>nil do
begin
case RadioGroup1.ItemIndex of // инструкция case, позволяет эффективно реализовать множественный выбор.
// сортировка по марке автомобиля
0: if car1^.markaCar_>car2^.markaCar_ then bool:=true;
// сортировка по моделе автомобиля
1: if car1^.modelCar_>car2^.modelCar_ then bool:=true;
// сортировка по типу кузова автомобиля
2: if car1^.typBasketCar_>car2^.typBasketCar_ then bool:=true;
// сортировка по объему двигателя автомобиля
3: if car1^.volumeEngineCar_>car2^.volumeEngineCar_ then bool:=true;
// сортировка по максимальной мощности автомобиля
4: if car1^.maxPowerCar_>car2^.maxPowerCar_ then bool:=true;
// сортировка по расходу топлива автомобиля
5: if car1^.consuptionFuelCar_>car2^.consuptionFuelCar_ then bool:=true;
end;
if bool=true then
begin
//меняем местами car1,car2 указатели в списке.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.