Главная страница
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.031 c
2-1172997048
mavrtuva
2007-03-04 11:30
2007.04.01
QuantumGrid


2-1173426039
wwwrr
2007-03-09 10:40
2007.04.01
constructor


15-1173453409
Sergp_N/A
2007-03-09 18:16
2007.04.01
Чем можно создать разделы на винте?


11-1153305248
DmiSb
2006-07-19 14:34
2007.04.01
Не получается через ADO открыть *.dbf


15-1173428362
Ega23
2007-03-09 11:19
2007.04.01
Коллеги, подскажите, как работают UPS-ы (не APC)?