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

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

TXMLDocument. Вылетает ошибка при завершении программы [D6, WinXP]


ionn ©   (2005-02-20 22:45:00) 

Здрасьте,

Написал процедуру, она читает ХМЛ файл,
в начале поставил
TXMLDocument.Active:= true
...
считываю
...
Active:=false; //<-Так вот на этой строчке прога вылетает, я её убрал, теперь прога вылетает при закрытии.

Как избавиться? И вообще я правильно использую этот Актив?


Eraser   (2005-02-20 23:21:00) [1]

ionn

Честно говоря я с интерфейсами не часто сталкивался, но думаю дело всётаки не в них...

А они в деструкторе не должны освобождаться?

Именно из за этого и ошибка!
Советую протрэйсить модуль этого компонента.


ionn   (2005-02-20 23:18:00) [2]

А они в деструкторе не должны освобождаться? который вывзывается самостоятельно при завершении программы или выходе из области видимости.
Или у меня не правильные предстваления о освобождении ресурсов?


Eraser   (2005-02-20 23:16:00) [3]

ionn

А где ресурсы освобождаются? Типа n := null;


ionn   (2005-02-20 23:13:00) [4]

ЭТОГО - это сообщение об ошибке


Eraser   (2005-02-20 23:12:00) [5]

ionn
после этого


Чего ЭТОГО?

finalization модулей GDIOBJ и DirectDraw

тут собака и порылась скорее всего...


ionn   (2005-02-20 23:12:00) [6]

Фрии не помагает

procedure cSystem.OpenConfig(name:string);
 var n,conf,node,nn,vr:IXMLNode;
     i,j:integer;
     setup:cSetup;
     s:^rStageParam;
     pr:^real; pi:^integer;      
 begin
      Form1.XML.Active:=true;
      n:=Form1.XML.DocumentElement;
      for i:=0 to n.ChildNodes.Count-1 do
      begin
           if n.ChildNodes[i].Attributes['name']=name then
           begin
                conf:=n.ChildNodes[i];
                //AdvSetup
                node:=conf.ChildNodes['AdvSetup'];
                cAdvSetup(sp_setup[current]).s_okno:=YN(node.ChildValues['okno']);
                cAdvSetup(sp_setup[current]).s_resu:=YN(node.ChildValues['resu']);
                cAdvSetup(sp_setup[current]).s_dial:=YN(node.ChildValues['dial']);
                //Meneger
                node:=conf.ChildNodes['Meneger'];
                meneger.Demo:=YN(node.ChildValues['demo']);
                meneger.started:=YN(node.ChildValues['started']);
                meneger.created:=YN(node.ChildValues['created']);
                meneger.show_progress:=YN(node.ChildValues['progress']);
             ....
               break;
           end;
      end;
      // - тута раньше было Active:=false
 end;

Если эту процедуру не вызывать, то всё нормально


ionn   (2005-02-20 23:08:00) [7]

после этого по F7 проходит еще по
finalization модулей GDIOBJ и DirectDraw


Eraser   (2005-02-20 23:07:00) [8]

А лучше приведи код.


Eraser   (2005-02-20 23:06:00) [9]

Понятно! Попробуй в форме в событии OnClose вписать
XMLDocument.Free;
не забудь Action:=caFree;


ionn   (2005-02-20 23:05:00) [10]

В файле проекта, на строке
end.
вываливается.


Eraser   (2005-02-20 23:00:00) [11]

ionn
Уже что-то. Обращение по несуществующему адресу.
Теперь попробуй нажать F9 и посмотреть в каком участке кода остановиться отладчик во время этой ошибки.
Ты вообще знаком с отладчиком? )


ionn   (2005-02-20 22:58:00) [12]

Это компонент для работы с XML файлами.

Ошибка:
Exception EAccessViolation in module Project1.exe at 00006594.
Access violation at addres 00406594 in module Project1.exe. Read of address 00000008.


Eraser   (2005-02-20 22:53:00) [13]

ionn
Вылетает ошибка при завершении программы


Услуги телепатов не на этом сайте!
Приводи название и код ошибки, и желательно участок кода.


GanibalLector   (2005-02-20 22:51:00) [14]

>TXMLDocument
Это ШО такое компонент?
По сабжу: в nil его или в Unassigned попробуй


Наверх

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