Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.01;
Скачать: CL | DM;

Вниз

Ошибка при завершении консольного приложения   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.068 c
15-1173294653
Nightmare
2007-03-07 22:10
2007.04.01
Mese Audio Player


15-1173064526
Slider007
2007-03-05 06:15
2007.04.01
С днем рождения ! 4 марта


11-1153760523
Alexei6021
2006-07-24 21:02
2007.04.01
Печать в KOL


3-1168691845
SerJaNT
2007-01-13 15:37
2007.04.01
Can not open a result set


15-1173254741
homm
2007-03-07 11:05
2007.04.01
Сплин - скажи