Форум: "Начинающим";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];
ВнизОшибка при завершении консольного приложения Найти похожие ветки
← →
Provodnick © (2007-03-09 16:42) [0]Есть консольное приложение, в котором создается OLE-объект. Все нормально отрабатывает. Но при завершении приложения стабильно выдается ошибка
Exception EAccessViolation in module oleaut32.dll at 00004915.
Access violation at address 77114915 in module "oleaut32.dll". Read of address 1
3A798E0.
Код программы примерно следующий:
program Install;
{$APPTYPE CONSOLE}
uses
SysUtils, Windows, Registry, ActiveX, ComObj, Classes;
.......
CoInitialize(nil);
dsoServer:=CreateOleObject("DSO.Server");
.......
CoUninitialize;
......
end.
Ошибка возникает именно где-то после последней строчки кода. Возможно что-то в финализации модулей. Не знаю даже. Помогите пожалуйста!!!
← →
Сергей М. © (2007-03-09 16:45) [1]Засада между CreateOleObject и CoUninitialize
← →
Provodnick © (2007-03-09 16:48) [2]С смысле? Прога отрабатывает без проблем. Т.е. окончание у нее такое:
.......
WriteLn("All OK!!!")
end.
"All OK!!!" выводится на консоль. После этого ошибка вылетает. Даже если весь код программы поместить в try except end - в except никогда не вываливается.
← →
Сергей М. © (2007-03-09 16:53) [3]
> С смысле?
В том самом.
В прямом.
← →
Provodnick © (2007-03-09 16:57) [4]Блин, я мысли читать не умею. Можно по конкретней.
← →
Сергей М. © (2007-03-09 17:00) [5]
> я мысли читать не умею
Я тоже.
И что ты при сем факте желал иметь ?)
← →
Provodnick © (2007-03-09 17:14) [6]Есть конкретные предложения по делу?
← →
Цукор5 (2007-03-09 18:30) [7]>Есть конкретные предложения по делу?
Найти объектную модель DSO.Server и внимательно ее перечитать.
Вероятно есть метод, который Вы не вызываете...что-то типа Close.
На худой конец попробоватьdsoServer:=Unassigned;
P.S. не забываем про try finally/except после вызова dsoServer:=CreateOleObject("DSO.Server");
← →
Provodnick © (2007-03-09 18:53) [8]CloseServer вызываю. dsoServer:=Unassigned тоже делаю. Настораживает тот факт, что ошибка возникает именно в самом конце... Кстати, при удалении из кода CoUninitialize ошибка исчезает при вызове из cmd. Однако при вызове из Windows Installer - снова появляется.
P.S.
Эта программа используется во время инсталляции для настройки БД OLAP.
← →
Аноним (2007-03-09 20:09) [9]а скока реф-каунт объекта в момент выхода на CoUninitialize?
Может там дело в том ,что после него Release неявно вызывается?
← →
palva © (2007-03-09 20:25) [10]
> Provodnick © (09.03.07 17:14) [6]
> Есть конкретные предложения по делу?
Убрать CoUninitialize;
← →
DrPass © (2007-03-09 21:34) [11]
> Убрать CoUninitialize;
Да и CoInitialize тоже
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2007.04.01;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.06 c