Показать сообщение отдельно
Старый 21.06.2013, 13:21   #30
SBJoker
Злобный Админ
 
Аватар для SBJoker
 
Регистрация: 04.09.2005
Сообщений: 5,926
Написано 3,415 полезных сообщений
(для 9,330 пользователей)
Ответ: Глупый вопрос.

Как я уже написал, цикл For...Each неправильно применять для модификации итерируемого списка. Потому что вы не владеете механизмом итерирования он скрыт от вас. Хотите контроля - используйте простой For...Next.

Почему работает с двумя начальными элементами, а не работает с одним?
Вероятно алгоритм итерирования такой:
в строке For...Each берется первый элемент First и выдаётся в переменную, и тут же итератор переходит на следующий элемент. В случае если в списке 1 элемент то итератор указывает на элемент - конец списка. Добавление нового элемента происходит перед концом списка. Если два элемента, то итератор указывает на второй элемент. И новый элемент добавится после него. Что позволит снова перейти на него в следующей итерации.

В строке Next происходит сравнение итератора с концом списка, элементы совпали - цикл завершен.
__________________
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Nikich (21.06.2013)