Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Поиск по ListBox в реальном времени


Автор: ShumaHerr 27.7.2008, 18:41
Есть TListBox с n-ным количеством строк и TEdit. Необходимо при каждом изменении текстового поля произвводить поиск по списку и выделять первое найденное слово. Типа поиск в реальном времени. Юзал во такой код:
Код

void __fastcall TForm1::Edit1Change(TObject *Sender)
{
int l;
l=Edit1->Text.Length();
for(int i=1;i<=ListBox1->Count;i++)
{
if(ListBox1->Items[i].Text.SubString(1,l)==Edit1->Text)
{
ListBox1->SetFocus();
ListBox1->ItemIndex=i;
}
}
}

при срабатывании этого события винда начинает ругаться. Вылетает окошечко следующего содержимого:
Access violation at address 00000000. Read of address 00000000.
Помогите плз отладить этот кусок кода или предложите другой вариант решения этой задачи. Заранее спасибо

Автор: Данкинг 27.7.2008, 18:57
Код

for(int i=0;i<=ListBox1->Count-1;i++)

 smile 

Автор: 586 27.7.2008, 19:00
Код
void __fastcall TForm1::Edit1Change(TObject *Sender)
{
    int l = Edit1->Text.Length();
    for(int i = 0; i < ListBox1->Count; ++i)
    {
        if(ListBox1->Items->Strings[i].SubString(1,l)==Edit1->Text)
        {
            //ListBox1->SetFocus();
            ListBox1->ItemIndex=i;
            break;
        }
    }
}

Автор: ShumaHerr 27.7.2008, 19:15
2 586 Большое спасибо.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)