Показать сообщение отдельно
  #3  
Старый 14.12.2013, 22:42
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от mad-d
Здравствуйте уважаемые софорумцы.
Сижу не один час и не могу понять: в чём проблема моей программы.
Мне поставлена задача создать БД без БД, т.е. использовать файл записи. Непосредственно перейдём к самой программе.
Запись в файл записи проходит нормально. Проверял. Но при выводе информации в StringGrid начинается просто хардкор:
Нужно прописать процедуру, чтобы выводились определённые записи с определёнными характеристиками. Процедура есть, но её работа не является корректной.
Процедура поиска действительно хардкорная
Так фильтры не пишут (пытаясь перебрать все возможные варианты).
Проверяй, вот так вроде правильно работает:
Код:
procedure TForm1.BitBtn1Click(Sender: TObject);
  {Выполнение поиска по ф. записи при определённых условиях/предпочтениям}
var
  i, n1, n2: Integer;
begin
  for i := 1 to StringGrid1.RowCount do
  begin
    StringGrid1.Rows[i].Clear;
  end;
  StringGrid1.RowCount := 2;

  AssignFile(F, 'CARS.txt');
  Reset(F);
  try
    n1:=0;
    n2:=0;
    while not Eof(F) do
    begin
      Read(F, Cars);
      Inc(n1);
      if ( (ComboBox1.Text = 'Все марки') or (ComboBox1.Text = Cars.mark) ) and // Проверяем марку
         ( (RadioGroup1.ItemIndex = 2 {Все авто}) or (RadioGroup1.ItemIndex = Cars.sost) ) and // Проверяем состояние авто
         ( (ComboBox2.Text = 'Любой') or (ComboBox2.Text = Cars.privod) ) and // Проверяем привод
         ( (ComboBox3.Text = 'Все') or (ComboBox3.Text = Cars.kp) ) and // Проверяем тип коробки передач
         ( StrToInt(Cars.prob) >= StrToInt(Edit3.Text) ) and // Проверяем диапазон побега
         ( StrToInt(Cars.prob) <= StrToInt(Edit4.Text) ) and
         ( StrToInt(Cars.price) >= StrToInt(Edit1.Text) ) and // Проверяем диапазон цен
         ( StrToInt(Cars.price) <= StrToInt(Edit2.Text) ) then
      begin
        OUTINFO(Cars, StringGrid1); // Если все проверки прошли только тогда отображаем эту запись
        Inc(n2);
      end;
    end;

    ShowMessageFmt('Отобрано %d из %d', [n2, n1]);
  finally
    CloseFile(F);
  end;
end;

p.s. Ещё непонятно почему в записи пробег и цена в виде строк, а не чисел. Ну и компоненты желательно переименовать по смыслу.
Ответить с цитированием