Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
1-1171046462
shr
2007-02-09 21:41
2007.04.01
есть ли мат. функции, работающие с Очень большими числами?


15-1173156404
eXPell
2007-03-06 07:46
2007.04.01
Эх, раз...


15-1173185073
alex_***
2007-03-06 15:44
2007.04.01
Кто-ть делал загрузочный USB flash из .iso?


15-1172177924
ДжекиМайер
2007-02-22 23:58
2007.04.01
АвтоРаспаковка *.nws чем ?


8-1152596059
zorik
2006-07-11 09:34
2007.04.01
Линии разных стилей толщиной более 1 пиксела





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский