Главная страница
    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.47 MB
Время: 0.042 c
4-1163287948
Ketmar
2006-11-12 02:32
2007.04.01
определить из сервиса, залогинен ли юзер и не админ ли он часом


2-1173093131
vtur
2007-03-05 14:12
2007.04.01
курсор мыши


11-1152373684
Andr-04
2006-07-08 19:48
2007.04.01
Рисование в RichEdit


2-1173264291
Nipel
2007-03-07 13:44
2007.04.01
позиция мыши в memo


4-1163174628
SkySpeed
2006-11-10 19:03
2007.04.01
Как можно отлавливать запускаемые процессы?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский