Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут
закрыты.
Читайте
требования к создаваемым темам.
-
GB826
-
- Постоялец
-
-
- Сообщения: 312
- Зарегистрирован: 04.08.2005 (Чт) 0:58
- Откуда: Планета #3
-
GB826 » 05.10.2005 (Ср) 14:43
- Код: Выделить всё
Dim i As Long
For i = 1 To tT.Count
If tT(i).isDestroy Then tT.Remove i
Next i
Выдает логичную ошибку, что нет такого элемента в конце, так как все сдвинулось...
А как правильно "массово" удалить элементы из коллекции с каким-либо признаком?
Пора уже всем хорошим людям собраться и убить всех плохих людей.
-
Konst_One
-
- Член-корреспондент академии VBStreets
-
-
- Сообщения: 3041
- Зарегистрирован: 09.04.2004 (Пт) 13:47
- Откуда: Химки
-
Konst_One » 05.10.2005 (Ср) 14:55
step -1 в цикл и считать с конца или Do ... Loop
-
Ruslan Demidow
-
- Мужчина!
-
-
- Сообщения: 987
- Зарегистрирован: 25.03.2004 (Чт) 13:39
- Откуда: N.Novgorod
-
Ruslan Demidow » 05.10.2005 (Ср) 15:01
Это если нужно все
- Код: Выделить всё
tT.Clear
или
Do While tT.Count>0
tT(tT.Count).Remove
Loop
или
set tT=Nothing
А если по условию, то
- Код: Выделить всё
For Each colItem In tT
If colItem.isDestroy Then
tT.Remove(colitem.key)
End If
Next
Последний раз редактировалось
Ruslan Demidow 05.10.2005 (Ср) 15:07, всего редактировалось 1 раз.
Это Ж-ж-ж-ж неспроста (с) Винни-Пух
-
GB826
-
- Постоялец
-
-
- Сообщения: 312
- Зарегистрирован: 04.08.2005 (Чт) 0:58
- Откуда: Планета #3
-
GB826 » 05.10.2005 (Ср) 15:06
Нет, удалить всю коллекцию, я и сам смогу, мне нужно удалять конкретные элементы...
- Код: Выделить всё
Dim i As Long
For i = 1 To tT.Count
If tT(i).isDestroy Then tT.Remove i
Next i
В данном случае удаляются все у которых isDestroy = True
Пора уже всем хорошим людям собраться и убить всех плохих людей.
-
GB826
-
- Постоялец
-
-
- Сообщения: 312
- Зарегистрирован: 04.08.2005 (Чт) 0:58
- Откуда: Планета #3
-
GB826 » 05.10.2005 (Ср) 15:11
- Код: Выделить всё
Dim i As Long
Dim CC As Long
CC = tT.Count
i = 0
Do While i < CC
i = i + 1
If tT(i).isDestroy Then
tT.Remove (i)
CC = CC - 1
End If
Loop
Вот чего получилось, если можно лучше и быстрее, напишите, пожалуйста
Пора уже всем хорошим людям собраться и убить всех плохих людей.
-
alibek
-
- Большой Человек
-
-
- Сообщения: 14205
- Зарегистрирован: 19.04.2002 (Пт) 11:40
- Откуда: Russia
alibek » 05.10.2005 (Ср) 15:12
GB826 писал(а):Вот чего получилось, если можно лучше и быстрее, напишите, пожалуйста
Перечитай первый ответ.
Lasciate ogni speranza, voi ch'entrate.
Вернуться в Visual Basic 1–6
Кто сейчас на конференции
Сейчас этот форум просматривают: AhrefsBot, Yandex-бот и гости: 34