Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Поиск в файле по параметрам [D7, XP]


newhite ©   (2005-12-21 00:50:00) 

Помогите разобраться!!!
В файле sklad.db есть 11 записей типа рекорд. Этой процедурой запускается поиск в файле по параметрам из комбоксов. Проблема: некоторые записи (подходящие по поиску) повторяются в итоговом листбоксе по несколько раз. Что это может быть?
(плиз, хелп). завтра уже сдавать прогу :(


procedure TPoiskForm.Button2Click(Sender: TObject);
type
     //запись файла
 tovar=record
   klas:string[20];
   tip:string[20];
   color:string[20];
   price:string[20];
   end;

var
  f: file of tovar;  // файл записей
  rec: tovar;        // запись, прочитанная из файла
  n,i: integer;         // кол-во записей удовлетворяющих запросу
  st: string[200];

begin
 AssignFile(f,'A:\sklad.db');
 {$I-}
 Reset(f);  // открыть файл для чтения
 {$I-}
 if IOResult <> 0 then
   begin
     ShowMessage('Ошибка открытия файла БД.');
     Exit;
   end;

  // обработка БД
if RadioButton2.Checked then
 ListBox1.Items.Add('*** ' + ComboBox4.Text + ' ***');
if RadioButton3.Checked then
 ListBox1.Items.Add('*** ' + ComboBox5.Text + ' ***');
if RadioButton4.Checked then
 ListBox1.Items.Add('*** ' + ComboBox6.Text + ' ***');

n :=0;
ListBox1.Clear; // очистить список поля ListBox
while not EOF(f) do
 begin
   read(f,rec); //прочитать запись
     if RadioButton1.Checked or
     (rec.klas = ComboBox4.Text) or
     (rec.tip = ComboBox5.Text) or
     (rec.color = ComboBox6.Text) then

begin
n:=n+1;
 st:='Велосипед: '+'класс: '+rec.klas+', тип рамы: '+rec.tip+', цвет: '+rec.color+', цена: $'+rec.price;

 end;
 listbox1.Items.add(st);
 end;
closefile(f);
if n=0 then
showmessage('В БД нет запрашиваемой информации');
end;


Плохиш   (2005-12-21 11:08:00) [1]


>  end;
>  listbox1.Items.add(st);

Эти две строки поменять местами


Наверх

Титульная страница Поиск, карта сайта Написать письмо