Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.04 c
3-1168931638
jeka_t
2007-01-16 10:13
2007.04.01
Как правильно передать американский формат вещественного числа?


15-1173287735
svr
2007-03-07 20:15
2007.04.01
Как восстановить файл? Срочно надо поднять винду!


15-1172928103
Sergius P
2007-03-03 16:21
2007.04.01
Подсчет трафика


15-1173256037
Некто
2007-03-07 11:27
2007.04.01
Простые тосты к 8.03


2-1173021469
Nija
2007-03-04 18:17
2007.04.01
Сигнал в "мозг"




   Наверх