Программа электронного каталога автомобилей, страница 4

                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 >> По вашему запросу не найдено ни одной записи.');