car:=car1^.next_;
car^.prev_:=car2;
car1^.next_:=car2^.next_;
car2^.next_:=car;
if car1^.next_<>nil then car1^.next_^.prev_:=car1
else carEnd:=car1;
car:=car1^.prev_;
if car<>nil then car^.next_:=car2
else carBegin:=car2;
car1^.prev_:=car2^.prev_;
car2^.prev_:=car;
car1^.prev_^.next_:=car1;
car:=car1;
car1:=car2;
car2:=car;
//переменной bool присваиваем false,
//замена выполнена и поэтому ее надо установить в первоначальное состояние.
bool:=false;
end;
car2:=car2^.next_;// переходим к следующему элементу списка
end;
car1:=car1^.next_;// переходим к следующему элементу списка
end;
Memo1.Lines.Add('Sort>>База отсортирована.');
ActionAddAllelementExecute(Sender);// Посмотреть все записи об автомобилях в StringGrid
end;
end;
procedure TForm1.ActionFindExecute(Sender: TObject);//Поиск автомобиля
var
s: string;// строка для получения записи об автомобиле
i: integer;// переменная
bool: Boolean; // переменная которая принимает значение True, если найден хотябы один автомобиль.
begin
//устанавливаем указатели на начало списка
car:=carBegin;
bool:= false;
i:=1;//начальное значение
// проверка на наличие в массиве хотя бы одного автомобиля
if carBegin = nil then
ShowMessage('В базе нет не одной записи!!!')
else
begin
While car<>nil do // цикл While по всем автомобилям
begin
// поиск на соответствие марок автомобилей, если не введена марка автомобиля,
//то считается что марка может быть любой
if(car^.markaCar_=EditMarkaCar.Text)or(Length(EditMarkaCar.Text)=0)then
// поиск на соответствие маделей автомобилей, если не введена мадель автомобиля,
//то считается что мaдель может быть любой
if(car^.modelCar_=EditModelCar.Text)or(Length(EditModelCar.Text)=0)then
//поиск на соответствие тип кузова автомобилей, если не введена тип кузова автомобиля,
// то считается что тип кузова может быть любой
if(car^.typBasketCar_=EditTypBasketCar.Text)or(Length(EditTypBasketCar.Text)=0)then
// поиск на соответствие объема двигателя автомобилей,
//если не введен объем двигателя автомобиля,
//то считается что объем двигателя может быть любым
if(Length(EditVolumeEngineCar.Text)=0)or
(car^.volumeEngineCar_=StrToFloat(EditVolumeEngineCar.Text))then
//поиск на соответствие максимальной мощности автомобилей,
//если не введен максимальная мощность автомобиля,
//то считается что максимальная мощность может быть любым
if(Length(EditMaxPowerCar.Text)=0)or
(car^.maxPowerCar_=StrToInt(EditMaxPowerCar.Text))then
//поиск на соответствие расхода топлива автомобилей,
//если не введен расход топлива автомобиля,
//то считается что расход топлива может быть любым
if(Length(EditConsuptionFuelCar.Text)=0)or
(car^.consuptionFuelCar_=StrToInt(EditConsuptionFuelCar.Text))then
begin
if bool = false then
begin
bool:=true;
Memo1.Lines.Add('Find >> По вашему запросу найдено сведущее:');
end;
StringGrid1.RowCount:=i+1;//увеличиваем число строк
// добавляем ее в StringGrid
StringGrid1.Cells[0, i]:=car^.markaCar_;
StringGrid1.Cells[1, i]:=car^.modelCar_;
StringGrid1.Cells[2, i]:=car^.typBasketCar_;
StringGrid1.Cells[3, i]:=FloatToStr(car^.volumeEngineCar_);
StringGrid1.Cells[4, i]:=IntToStr(car^.maxPowerCar_);
StringGrid1.Cells[5, i]:=IntToStr(car^.consuptionFuelCar_);
i:=i+1;//увеличиваем на 1
// формируем строку содержащую все сведения об автомобиле
s:='Find >> '+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);
//получаем тикущий элемент списка
//это необходимо для Добавления перед и после текущиго элементом
carCurrent:=car;
end;
car:=car^.next_;// переходим к следующему элементу списка
end;
//Проверяем были записи
if bool = false then //записей нет
begin
ShowMessage('По вашему запросу не найдено ни одной записи.');
Memo1.Lines.Add('Find >> По вашему запросу не найдено ни одной записи.');
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.