![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
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 попробуй