Co muszę zrobić, żeby przy wyszukiwaniu binarnym (dziel i zwyciężaj) działał mi poprawie jeśli moja poszukiwana wartość znajduje się w bazie więcej niż jeden raz? Wcześniej nie miałem z tym problemu jeśli szukałem po ID, bo zawsze miałem tylko jedną taką wartość.
Pocz := 0; //index początku
Kon := Length(tab)-1; // index końca
x := StrToInt(edtIDBin.Text); //poszukiwana wartość
index := 0; // pusty index
i := 1;
strngrd3.RowCount := 1;
QueryPerformanceFrequency(Freq);
QueryPerformanceCounter(TimeStart);
while (Pocz <= Kon) do
begin
srodek := (Pocz + Kon) div 2;
if (tab[srodek].ID = x) then
begin
index := srodek;
strngrd3.RowCount := strngrd3.RowCount + 1;
strngrd3.Cells[0,i] := IntToStr(tab[index].ID);
strngrd3.Cells[1,i] := tab[index].Imie;
strngrd3.Cells[2,i] := tab[index].Nazwisko;
strngrd3.Cells[3,i] := DateToStr(tab[index].Data);
strngrd3.Cells[4,i] := tab[index].Firma;
strngrd3.Cells[5,i] := tab[index].Model;
strngrd3.Cells[6,i] := FloatToStr(tab[index].Cena) + ' zł';
strngrd3.Cells[7,i] := IntToStr(tab[index].Gwarancja);
if (tab[index].Stan = True) then strngrd3.Cells[8,i] := 'Nowy'
else strngrd3.Cells[8,i] := 'Uzywany';
Inc(i);
Break;
end;
if (tab[srodek].ID < x) then
Pocz := srodek + 1
else
Kon := srodek - 1;
end;