Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

TService + TThread + TXMLDocuent [D7, WinXP]


Страницы:   1 2

iXT ©   (2007-02-16 15:29:00) 

Приветствую!

Проблемка появилась.
Делаю службу. Та создает поток. В потоке создается TXMLDocument приблизительно так:


CoInitialize(nil);
XML:=TXMLDocument.Create(nil);
XML.FileName:='\\ServerName\.......\file.xml';
XML.Active:=true;

for i:= 0 to XML.DocumentElement.ChildNodes.Count- 1 do
...


На выделенном участке возникает AV, причем Active=true в этот момент.
xml-фаил правильный, если с ним работать как с VCL на форме, то никаких проблем не возникает.
У кого есть соображения по этому поводу?


Reindeer Moss Eater   (2007-02-20 11:10:00) [1]

Все отличие "на форме/не на форме" в том, что в первом случае ссылка объектная, во втором - интерфейсная.


iXT   (2007-02-20 10:31:00) [2]

Не надо искать ошибку в XML

> iXT ©   (16.02.07 15:29)  [0]
> xml-фаил правильный, если с ним работать как с VCL на форме,
>  то никаких проблем не возникает.


Reindeer Moss Eater   (2007-02-20 09:35:00) [3]

Я и говорю, что мы здесь пытаемся искать ошибку не в реальном коде, а нарисованном тобой и приблизительно похожим на тот, в котором ошибка.
Ищем ошибку не в реальном xml, а приблизительно похожем на реальный.


iXT   (2007-02-20 09:32:00) [4]


> Reindeer Moss Eater ©   (20.02.07 09:25) [24]
> У него сам xml кривой, а мы тут по фотографии лечить пытаемся.
>

Да не кривой он. Рабочий. Я писал его от руки, т.к. delphi и i-net на разных машинах. Ну забыл нерисовать "/". Я просто привел структуру.


iXT   (2007-02-20 09:28:00) [5]

Не надо искать в 17й :)
Он твой практически и есть, ну если очень хочется:


CoInitialize(nil);
XML:=TXMLDocument.Create(nil);
XML.Options := [doNodeAutoCreate, doAttrNull, doAutoPrefix, oNamespaceDecl];
XML.ParseOptions := [];
XML.DOMVendor := GetDOMVendor('');
XML.LoadFromFile('\\ServerName\.......\file.xml');
...
...
for i:= 0 to XML.DocumentElement.ChildNodes.Count- 1 do
...
...

Смысл было писать код? Ведь ничего не поменялось.
Да и переписал его под INI


Reindeer Moss Eater   (2007-02-20 09:25:00) [6]

У него сам xml кривой, а мы тут по фотографии лечить пытаемся.


Плохиш   (2007-02-20 00:57:00) [7]


> iXT ©   (19.02.07 11:22) [18]

> если запускать из отладчика (Спасибо Сергей М.), то он еще
> раньше отваливает на AV при LoadFromFile

Странно, всю ветку просмотрел и нашёл только одно упоминание LoadFromFile в моём работающем коде. Опять ошибку из 17й строки ищем там где светло?


Reindeer Moss Eater   (2007-02-19 17:40:00) [8]

Не знаю, простейший ли это xml, но то что он не валидный - это точно.


iXT   (2007-02-19 17:35:00) [9]


> SlymRO   (19.02.07 13:26) [19]
> а чем вам CreateOLEObject('MSXML.DOMDocument'); не нравится?
>

Я не говорил, что не нравится. Да и переделал это я уже не много.
Тут хотелось разобраться...

> Reindeer Moss Eater ©   (19.02.07 13:56) [20]
> так как оунером в конструктор передан nil

Может быть, покрайней мере похоже. xml-простейший ~=

<? xml version="1.0" encodng="windows-1251" standalone="yes"?>
<clients>
<client atr1="qqq" atr2="www" atr3="eee"/>
<clients>


Reindeer Moss Eater   (2007-02-19 13:56:00) [10]

Вообще так, как описано, - не бывает.
Просто не бывает.
Думаю причина AV в том, что этот конкретный экземпляр TXMLDocument - чисто интерфейсный (так как оунером в конструктор передан nil) и ссылка на него выходит из области видимости, после чего объект освобождается.

Ничем другим такое странное поведение не объяснить.


SlymRO   (2007-02-19 13:26:00) [11]

а чем вам CreateOLEObject('MSXML.DOMDocument'); не нравится?


iXT   (2007-02-19 11:22:00) [12]


> Вообще-то я этого не писал, а предлагал использовать Vendor
> по умолчанию. А к показанному, надеюсь модуль msxmldom подключить
> не забыл?

Да, разумеется приципил.
Тока вот ни при
GetDOMVendor('MSXML')
ни
GetDOMVendor('')
ничего не меняется :(

если запускать из отладчика (Спасибо Сергей М.), то он еще раньше отваливает на AV при LoadFromFile
Без отладчика, он пробегал там без ошибок (получено ведением лога)
File разумеется Exists


Плохиш   (2007-02-18 03:07:00) [13]


> >    XML.DOMVendor := GetDOMVendor( 'MSXML');
>
> А разве они по умолчанию не должны присваиваться?
> Поставил, там ситуация не поменялась, да и домой ушел, так
> что в понедельник помучаю.

Вообще-то я этого не писал, а предлагал использовать Vendor по умолчанию. А к показанному, надеюсь модуль msxmldomподключить не забыл?

Я использую xercesxmldom, т.к. ms* в люниксе нету :-)


iXT   (2007-02-16 20:53:00) [14]

Господа!
Что можно сказать, "Век живи, век учись". Ну не знал я что сервис в отладчике можно прогонять. Ну расстреляйте меня!

Да, и если начинающий возьмется создовать службу, да с потоками, да.... и т.д. , то ИМХО у него появится куча вопросов совсем другого характера.


> Плохиш ©   (16.02.07 16:26) [7]
>
> > iXT ©   (16.02.07 15:29)  
>    XML.Options := [doNodeAutoCreate, doAttrNull, doAutoPrefix,
>  doNamespaceDecl];
>    XML.ParseOptions := [];
>    XML.DOMVendor := GetDOMVendor('MSXML');

А разве они по умолчанию не должны присваиваться?
Поставил, там ситуация не поменялась, да и домой ушел, так что в понедельник помучаю.
Спасибо еще раз.


Сергей М.   (2007-02-16 16:48:00) [15]


> Плохиш ©   (16.02.07 16:46) [13]


Пингвины - они такие заразы)


Сергей М.   (2007-02-16 16:47:00) [16]


> Плохиш ©   (16.02.07 16:44) [12]


"Начинающим" как раз и пытаются объяснить, что все "великие дела" начинаются с досконального изучения возможностей встроенного отладчика)


Плохиш   (2007-02-16 16:46:00) [17]

О, блин, как "Основная" 8-0  Это всё происки люниксоидов...


Плохиш   (2007-02-16 16:44:00) [18]


> Сергей М. ©   (16.02.07 16:42) [10]
> Reindeer Moss Eater ©   (16.02.07 16:42) [11]

Господа, конференция называется "Начинающим" :-) не располяйтесь...


Reindeer Moss Eater   (2007-02-16 16:42:00) [19]

Может еще скажешь, что и xml.xml.text содержит то, что ожидается?


Сергей М.   (2007-02-16 16:42:00) [20]


> как.. ?


Каком кверху)

На то существует станд.справка по теме "Debugging service applications".
Разуй глаза - на то и справка)


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо