powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Exception в консольнике при использовании Com-объектов
18 сообщений из 18, страница 1 из 1
Exception в консольнике при использовании Com-объектов
    #32376708
vvHedgehog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот сорс
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
program PrjConsExcept;
{$APPTYPE CONSOLE}
uses SysUtils, ActiveX, ComObj;
var s :string;    iConv :IDispatch;
begin
  CoInitialize(nil);
  s:='';
  try
  try
    iConv := CreateOleObject('MSXML.DOMDocument');
    Writeln('One');
    Writeln('Two');
    raise Exception.Create('Babah!');
    OleVariant(iConv).load('d:\work\para\sampleconv.xml');
    Writeln('Three');
  finally
    iConv := nil;
    CoUninitialize;
  end;
  except
    on e:Exception do begin
      s := e.Message;
    end;
  end;
  if s<>'' then Writeln(s);
  Writeln('Fin');
end.

Если закомментировать все связанное с COM, то все работает. Иначе программа отрабатывает до строки Writeln('Fin'); и вылетает с аксес виолейшаном...
Помоготе разобраться!
...
Рейтинг: 0 / 0
Exception в консольнике при использовании Com-объектов
    #32376728
srf2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
версию дельфи скажи
в 5 и 7 все работает нормально
...
Рейтинг: 0 / 0
Exception в консольнике при использовании Com-объектов
    #32376757
vvHedgehog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Делфа 5. Работает в отладчике. Да. Работает при запуске из командной строки? Нет.
ОС - Win2000 prof sp2
...
Рейтинг: 0 / 0
Exception в консольнике при использовании Com-объектов
    #32376767
vvHedgehog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
в конце Exception не вываливается, если убрать создание объекта. Видимо я его не так освобождаю... может функцию какую дополнительно надо вызвать?
...
Рейтинг: 0 / 0
Exception в консольнике при использовании Com-объектов
    #32376800
vvHedgehog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
program PrjcomExcept;
uses  Forms, SysUtils, ActiveX, ComObj;
{$R *.RES}
var s :string;
    iConv :IDispatch;
begin
  Application.Initialize;
  Application.Run;
  CoInitialize(nil);
  s:='';
  try
  try
    iConv := CreateOleObject('MSXML.DOMDocument');
    Application.MessageBox('One','', 0 );
    Application.MessageBox('Two','', 0 );
    raise Exception.Create('Babah!');
    OleVariant(iConv).load('d:\work\para\sampleconv.xml');
    Application.MessageBox('Three','', 0 );
  finally
    iConv := nil;
    CoUninitialize;
  end;
  except
    on e:Exception do  s := e.Message;
  end;
  if s<>'' then Application.MessageBox(PChar(s),'', 0 );
  Application.MessageBox('Fin','', 0 );
end.

Такая фигня, не консольник отрабатывает на ура.... вот.....
...
Рейтинг: 0 / 0
Exception в консольнике при использовании Com-объектов
    #32376873
vvHedgehog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ну что никто не знает в чем проблема?
...
Рейтинг: 0 / 0
Exception в консольнике при использовании Com-объектов
    #32376886
Фотография KirillovA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кривой код значит
...
Рейтинг: 0 / 0
Exception в консольнике при использовании Com-объектов
    #32376899
srf2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
похоже этому MSXML.DOMDocument нужен message loop
...
Рейтинг: 0 / 0
Exception в консольнике при использовании Com-объектов
    #32376927
ZrenBy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Обсуждение некоего подхода к CoInitialize() снизу\r
\r
/topic/68050
...
Рейтинг: 0 / 0
Exception в консольнике при использовании Com-объектов
    #32376952
vvHedgehog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 KirillovA с вашей манией величия можете в этот топ не заходить. То же мне умник.

2 srf2000 дело не в MSXML.DOMDocument. Я натолкнулся на эту ситуацию в другой программе, где вызывал свой COM-объект. Думал у меня объект кривой. Создал с нуля новый проект, где создаю довольно стабильный по-моему объект MSXML.DOMDocument. Дело даже не в этом.
Такой код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
program PrjConsExcept;
{$APPTYPE CONSOLE}
uses SysUtils, ActiveX, ComObj;
var iConv :IDispatch;
begin
  CoInitialize(nil);
    iConv := CreateOleObject('MSXML.DOMDocument');
    Writeln('One');
    Writeln('Two');
    Writeln('Three');
    iConv := nil;
    CoUninitialize;
  Writeln('Fin');
end.

Дает такой результат:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
program PrjConsExcept;
{$APPTYPE CONSOLE}
uses SysUtils, ActiveX, ComObj;

var s :string;
    iConv :IDispatch;
begin
  // Insert user code here
  CoInitialize(nil);
  s:='';
//  try
//  try
    iConv := CreateOleObject('MSXML.DOMDocument');
    Writeln('One');
    Writeln('Two');
//    raise Exception.Create('Babah!');
//    OleVariant(iConv).load('d:\work\para\sampleconv.xml');
    Writeln('Three');
//  finally
    iConv := nil;
    CoUninitialize;
{  end;
  except
    on e:Exception do begin
      s := e.Message;
    end;
  end;
//  CoUninitialize;
  if s<>'' then Writeln(s);}
  Writeln('Fin');
end.
...
Рейтинг: 0 / 0
Exception в консольнике при использовании Com-объектов
    #32376979
srf2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
замени "довольно стабильный по-моему объект MSXML.DOMDocument" на например Excel.Application и почувствуй разницу
...
Рейтинг: 0 / 0
Exception в консольнике при использовании Com-объектов
    #32376984
vvHedgehog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
упс... не то скопировал...
Код: plaintext
1.
2.
3.
4.
5.
6.
{One
Two
Tree
Fin
Exception EAccessViolation in module PrjConsExcept.exe at 0000450A.
Access violation at address 0040450A in module 'PrjConsExcept.exe'. Read of addr
ess 00EFAD98.}
...
Рейтинг: 0 / 0
Exception в консольнике при использовании Com-объектов
    #32377022
vvHedgehog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почувствовал. Но в чем подвох?
...
Рейтинг: 0 / 0
Exception в консольнике при использовании Com-объектов
    #32377029
srf2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я свое предположение высказал... а зачем именно консольное приложение?
...
Рейтинг: 0 / 0
Exception в консольнике при использовании Com-объектов
    #32377090
Фотография KirillovA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> vvHedgehog
спасиба
...
Рейтинг: 0 / 0
Exception в консольнике при использовании Com-объектов
    #32377107
vvHedgehog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2 srf2000 Придется теперь без него.
Но не суть. Мне теперь уже принципиально интерестно в чем дело.
Читал топ предложенный ZrenBy. Там я понял обвиняют CoInitialize. Пробовал вызов ее засовывать в отдельный блок (в процедуру), не помогло....
...
Рейтинг: 0 / 0
Exception в консольнике при использовании Com-объектов
    #32377155
srf2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
гы :)
если не вызывать CoUninitialize, то все нормально...
...
Рейтинг: 0 / 0
Exception в консольнике при использовании Com-объектов
    #32377174
vvHedgehog
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Действительно.....
Вот опять дядя Билли виноват....

Спасибо.

Только рисково как-то..... я уж лучше без консольника...
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Exception в консольнике при использовании Com-объектов
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]