Форум: "Начинающим";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];
ВнизПомогите с ListBox Найти похожие ветки
← →
Cerberus © (2005-12-03 19:35) [0]Ну жно в лист боксе найти имя и удалить его пробую этот код, но ни чего не выходит.
for f:=0 to ListBox1.Items.Count-1 do if ListBox1.Items.Strings[f] = user then listbox1.Items.Delete(f);
← →
Antonn © (2005-12-03 19:40) [1]что такое
user
?
регистрозависимость есть.
и нужноfor f:=ListBox1.Items.Count-1 downto 0 do
← →
begin...end © (2005-12-03 19:40) [2]Крутите цикл в обратную сторону (downto). И не совсем понятно, почему не выходите из цикла сразу после удаления. Или возможно, что в списке будет несколько элементов, удовлетворяющих условию?
← →
Cerberus © (2005-12-03 19:46) [3]
> что такое user?
Переменная.
> begin...end © (03.12.05 19:40) [2]
Маловероятно.
А что даст прокрутка цикла в обратную сторону?
← →
Antonn © (2005-12-03 19:51) [4]Cerberus © (03.12.05 19:46) [3]
Переменная.
да ну?
:)
> А что даст прокрутка цикла в обратную сторону?
догадайся. AV при удалении хоть одной строки, как минимум.
← →
Cerberus © (2005-12-03 19:56) [5]Нифига не выходит.
← →
begin...end © (2005-12-03 20:01) [6]> Cerberus © (03.12.05 19:46) [3]
Начальное и конечное значение счётчика цикла for вычисляется только один раз (перед его исполнением), а не на каждом проходе. При прямом цикле получаем следующее: нижняя граница -- 0, верхняя граница -- число, на единицу меньшее количества элементов в списке. Если хотя бы один из элементов будет удалён, то реальное количество элементов в списке уменьшится, а верхняя граница останется прежней (она не перевычисляется). А вот при проходе цикла в обратную сторону такого не будет, хотя границы также будут вычислены лишь единожды. Подумайте, почему.
> Antonn © (03.12.05 19:51) [4]
>> А что даст прокрутка цикла в обратную сторону?
> догадайся. AV при удалении хоть одной строки, как минимум.
Прокрутка в обратную сторону даст AV? :-)
Да и при прямом проходе будет не AV, а EStringListError.
> Cerberus © (03.12.05 19:56) [5]
Ждём код, содержимое ListBox, образец для поиска и симптомы того, что "нифига не выходит".
← →
Cerberus © (2005-12-03 20:13) [7]Вощем Содержимое ListBox:
Sabaka
Cerberus
Ekzot
и в таком духе
То есть на одну строчку одно слово.
нужо найти к примеру Sabaka и удалить эту строку.
> что "нифига не выходит".
Тоесть ничего не происходит.
← →
ListBox (2005-12-03 20:26) [8]
procedure TForm1.Button1Click(Sender: TObject);
var f:word;
begin
f:=0;
while f<ListBox1.Items.Count do
begin
if ListBox1.Items.Strings[f] = "user" then listbox1.Items.Delete(f);
f:=f+1;
end;
end;
← →
begin...end © (2005-12-03 20:31) [9]> Cerberus © (03.12.05 20:13) [7]
Уфф... Там может быть только одна такая строчка, или их может быть несколько?
> ListBox (03.12.05 20:26) [8]
if ListBox1.Items.Strings[f] = "user" then
ListBox1.Items.Delete(f)
else
f := f + 1;
иначе, если две строки подряд будут, то не удалит.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2005.12.18;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.012 c