![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Ошибка при завершении консольного приложения [D6, WinXP]
Provodnick © (2007-03-09 16:42:00)Есть консольное приложение, в котором создается 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.
Ошибка возникает именно где-то после последней строчки кода. Возможно что-то в финализации модулей. Не знаю даже. Помогите пожалуйста!!!
DrPass (2007-03-09 21:34:00) [1]
> Убрать CoUninitialize;
Да и CoInitialize тоже
palva (2007-03-09 20:25:00) [2]
> Provodnick © (09.03.07 17:14) [6]
> Есть конкретные предложения по делу?
Убрать CoUninitialize;
Аноним (2007-03-09 20:09:00) [3]а скока реф-каунт объекта в момент выхода на CoUninitialize?
Может там дело в том ,что после него Release неявно вызывается?
Provodnick (2007-03-09 18:53:00) [4]CloseServer вызываю. dsoServer:=Unassigned тоже делаю. Настораживает тот факт, что ошибка возникает именно в самом конце... Кстати, при удалении из кода CoUninitialize ошибка исчезает при вызове из cmd. Однако при вызове из Windows Installer - снова появляется.
P.S.
Эта программа используется во время инсталляции для настройки БД OLAP.
Цукор5 (2007-03-09 18:30:00) [5]>Есть конкретные предложения по делу?
Найти объектную модель DSO.Server и внимательно ее перечитать.
Вероятно есть метод, который Вы не вызываете...что-то типа Close.
На худой конец попробоватьdsoServer:=Unassigned;
P.S. не забываем про try finally/except после вызова dsoServer:=CreateOleObject('DSO.Server');
Provodnick (2007-03-09 17:14:00) [6]Есть конкретные предложения по делу?
Сергей М. (2007-03-09 17:00:00) [7]
> я мысли читать не умею
Я тоже.
И что ты при сем факте желал иметь ?)
Provodnick (2007-03-09 16:57:00) [8]Блин, я мысли читать не умею. Можно по конкретней.
Сергей М. (2007-03-09 16:53:00) [9]
> С смысле?
В том самом.
В прямом.
Provodnick (2007-03-09 16:48:00) [10]С смысле? Прога отрабатывает без проблем. Т.е. окончание у нее такое:
.......
WriteLn('All OK!!!')
end.
"All OK!!!" выводится на консоль. После этого ошибка вылетает. Даже если весь код программы поместить в try except end - в except никогда не вываливается.
Сергей М. (2007-03-09 16:45:00) [11]Засада между CreateOleObject и CoUninitialize