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

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

Поиск в ListBox [D7, XP]


Johny ©   (2006-12-27 18:53:00) 

procedure TMy_key.Button2Click(Sender: TObject);
var
 text: String;
begin
 text:= ComboBox3.text;
 if text <> '' then
begin
 With ListBox1 do
begin
 ListBox1.Perform(LB_SELECTSTRING, ItemIndex, LongInt(text));
end;
 if ListBox1.Selected[ListBox1.ItemIndex] then
begin
 Memo1.Lines.Add(ListBox1.Items[ListBox1.ItemIndex]);
 end
 else
 MessageDlg('Ничего не найдено', mtInformation, [mbOk], 0);
 end
 else
 Exit;
end;

Не могу найти ошибку! 'List index out of bounds(-1)'


Германн   (2006-12-28 00:26:00) [1]


> Ларчик просто открывался!

Ага. Только стОит ли "ларчик" открывать динамитом. Почитай справку по методу IndexOf.


Anatoly Podgoretsky   (2006-12-27 22:48:00) [2]

> Johny  (27.12.2006 22:25:16)  [16]

Ну тогда перечитай ветку.


Johny   (2006-12-27 22:25:00) [3]


> Не хочешь на себя взглянуть?

В смысле?


Anatoly Podgoretsky   (2006-12-27 22:23:00) [4]

> Johny  (27.12.2006 21:13:10)  [10]

Не хочешь на себя взглянуть?


Johny   (2006-12-27 22:17:00) [5]

Я всё исправил сам:
procedure TMy_key.Button2Click(Sender: TObject);
var
 text: String;
 sl: Integer;
begin
 text:= ComboBox3.text;
 if text <> '' then
begin
 With ListBox1 do
begin
 sl:= ListBox1.Perform(LB_SELECTSTRING, ItemIndex, LongInt(text));
end;
 if sl > 0 then
 Memo1.Lines.Add(ListBox1.Items[ListBox1.ItemIndex])
 else
 MessageDlg('Ничего не найдено!', mtInformation, [mbOk], 0);
 end
 else
 Exit;
end;

Ларчик просто открывался!
Теперь надо решить проблемму с ListBox1.Perform что бы дойдя до конца файла не возвращался в начало.
Всем спасибо за помощь.


Virgo_Style   (2006-12-27 21:44:00) [6]

Позволю себе поддаться на слабо.

я бы использовал оператор if и сравнение ItemIndex с -1.


Johny   (2006-12-27 21:27:00) [7]


> А, тебе дельный? Тогда книжки читай и язык учи.

Ну как бы ты написал этот код? Докажи что ты прочёл нужные книжки и выучил язык. И вообще, для чего нужен этот форум? Репликами обмениватся?


Virgo_Style   (2006-12-27 21:17:00) [8]

А, тебе дельный? Тогда книжки читай и язык учи.


Johny   (2006-12-27 21:13:00) [9]

Дастали демагоги! Хоть бы кто дельный совет дал.


Virgo_Style   (2006-12-27 21:08:00) [10]

Johny ©   (27.12.06 20:46) [8]
Но почему не срабатывает оператор сравнения?

чтобы сравнить что-то, надо его в руки взять, этого чего-то и нету, вот и получаешь по рукам


Johny   (2006-12-27 20:46:00) [11]

Я уже понял!
Если ItemIndex = 0 тогда Selected = True, а если ItemIndex = -1 то Selected = False и добавлять в Memo нечего. Но почему не срабатывает оператор сравнения?


Anatoly Podgoretsky   (2006-12-27 20:36:00) [12]

> Johny  (27.12.2006 19:48:04)  [4]

Это не надо вставлять в код, это значение ItemIndex, при котором возникает у тебя ошибка.


Johny   (2006-12-27 20:15:00) [13]


> ну а над ситуацией когда в listbox1 ничего не выделено твой
> моск не думал?


> Убей себя ап стену.

Ты в двух предложениях умудрился две ошибки сделать! Я представляю сколько ты их исходниках делаешь! Лучше бы помог.


Palladin   (2006-12-27 19:57:00) [14]

Убей себя ап стену.


Johny   (2006-12-27 19:48:00) [15]


> ItemIndex = -1

Я пытался вставлять это в код, всё по прежнему. Если что то выделено, то проблем нет, а если нет то выдаёт ошибку!


Anatoly Podgoretsky   (2006-12-27 19:14:00) [16]

> Johny  (27.12.2006 18:53:00)  [0]

ItemIndex = -1


Palladin   (2006-12-27 19:14:00) [17]

ну а над ситуацией когда в listbox1 ничего не выделено твой моск не думал?


umbra   (2006-12-27 19:12:00) [18]

с таким кодом Вы еще легко отделались. А то ведь и format c: где-то мог затеряться :)


Наверх

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