| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Для новичков > IXMLDocument убивается раньше времени |
| Автор: kami 18.10.2012, 16:46 | ||
| Доброго времени суток, господа! Вновь я с вопросом по непонятной мне области... Имеем: D2010, Win7. Код, работающий в дополнительном потоке (на всякий случай - синхронизация с другими потоками не требуется, очередь сообщений создана):
Соответственно, по выходу из функции Result указывает в никуда... Как победить и возможно ли это? Не хотелось бы выносить этот код выше по уровню вложенности - ему много где предстоит использоваться... P.S. С xml работать пришлось впервые, так что если есть ошибки/некорректности помимо основного вопроса - также буду признателен на указание оных. |
| Автор: lomaster 18.10.2012, 17:01 |
| Ну а чего вы хотели от интерфейсной ссылки? больше ее никто не использует ее разрушили. Клонировать надо в результат ваш лист. Либо менять подход, к примеру переложить в список объектов, либо XMLDocument создавать раньше а сюда передать параметром, либо еще как, ... от задачи надо исходить. |
| Автор: kami 18.10.2012, 19:53 | ||
Как это - никто не использует? Мне очень нужна ее "дочка" - IXMLNodeList. И мне крайне непонятно, почему при наличии ссылки на нужный мне интерфейс убивается его родитель, убивая тем самым и нужную мне информацию.
Имхо, было бы неплохо. Победить это, я так понял, нереально? Значит, придется пересматривать эту часть кода... Эх, где наша не пропадала... |
| Автор: MetalFan 18.10.2012, 21:18 |
| На то они и интерфейсы. Мало-ли какая там дочка кому нужна. Ссылок на сам интерфейс ноль - интерфейс уничтожился. И это очень удобно и логично на мой взгляд. А если учитывать, что кто-то где-то на дцатого чилда ссылается, так представляю, как весь этот механизм тормозить начнет. |
| Автор: lomaster 18.10.2012, 21:51 | ||||||
Руками делайте, только вот как вы потом декремент делать будете я даже и предположить не могу. Добавлено через 9 минут и 15 секунд
|
| Автор: Чучмек 18.10.2012, 22:25 | ||
|
| Автор: kami 18.10.2012, 22:35 |
| Ну ладно, ладно, пристыдили Код будет переделан с учетом этой особенности. Добавлено через 4 минуты и 52 секунды Вот только одного в толк не возьму - до того, как перенес этот код в рабочее приложение, тестировал его в однопоточном VCL (простейший вывод результата в мемо). И никаких проблем не было... Чучмек, этого, если честно, хотелось избежать. Ибо в приведенной здесь реализации некому будет делать xml.Release... Или я неправильно понял? |
| Автор: Чучмек 18.10.2012, 23:02 |
Да некому. Я сейчас попробовал получить через IXMLNodeList "родителя" - IXMLDocument. Но увы :( |
| Автор: Чучмек 18.10.2012, 23:33 |
| У IXMLNodeList "родителя" не нашел, а вот у IXMLNode есть OwnerDocument - вот это он и есть родимый. |