XMLDocument.removechild чяднт?
				
Добавлено: 
17.09.2013 19:17:16 nds
				- Код: Выделить всё
- var
 fb2: TXMLDocument;
 il:TDOMNodeList;
 ////вырезан кусок не имеющий отношения к проблеме//////
 il:=fb2.GetElementsByTagName('binary');
 for i:=1 to il.Count do
 il.Item[i].ParentNode.RemoveChild(il.Item[i]);
вылетает на последней строчке с ошибкой "External:SIGSEGV"
 
			
				Re: XMLDocument.removechild чяднт?
				
Добавлено: 
17.09.2013 20:15:45 Sergei I. Gorelkin
				Используешь цикл for для итерации по TDOMNodeList с модификацией документа.
GetElementsByTagName возвращает список, отражающий текущее состояние документа, а цикл for вычисляет кол-во итераций один раз в начале, поэтому по мере удаления узлов происходит выход за пределы списка. Не говоря о том, что на каждой итерации список перестраивается с повторным поиском всех элементов по имени...
			 
			
				Re: XMLDocument.removechild чяднт?
				
Добавлено: 
17.09.2013 21:50:09 nds
				Sergei I. Gorelkin писал(а):Не говоря о том, что на каждой итерации список перестраивается с повторным поиском всех элементов по имени...
чудны извращения мысли программистов lcl
 
			
				Re: XMLDocument.removechild чяднт?
				
Добавлено: 
11.10.2013 05:04:31 Иван Шихалев
				Извращения-то тут откуда? Такое поведение определено в стандартах DOM.
			 
			
				Re: XMLDocument.removechild чяднт?
				
Добавлено: 
11.10.2013 13:36:30 vada
				- Код: Выделить всё
- for i:=1 to il.Count do
 il.Item[i].ParentNode.RemoveChild(il.Item[i]);
 
Нууу... Так нельзя. Полюбасу грабли будут. Если есть желание в цикле элементы поудалять, так надо цикл в обратную сторону запускать downto, типа.