![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Поиск в 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: где-то мог затеряться :)