Ошибка при закрытии проги с MapControl

0 голосов
спросил 12 Сен, 05 от DmitryOrlov (540 баллов) в категории Программные продукты Esri

Доброго всем!

Кто-нибудь встречался с такой ситуацией (она у меня "прописалась" и никак не выгоняется):

Дельфовое приложение, создаю обычную форму, кидаю на нее обычный MapControl, открываю в нем обычную карты (LoadMxFile). При этом все нормально (относительно) работает, но при закрытии моего приложения, запущенного из Дельфи вылазит Error: "...Access violation..." и открывается окно Debugger-а, а при закрытии приложения, запущенного как exe-шник: выходят два окна с сообщениями, типа: "пмять не может быть "read".

Кто-нибудь сталкивался с подобным, в чем причина ошибок и что можно сделать?

7 Ответы

0 голосов
ответил 12 Сен, 05 от DmitryOrlov (540 баллов)

Дополнение: эта ситуация возникает даже при самом простом приложении, где только создается MapControl и открывается в нем карта. Если карта не отрыта - то все нормально. А если карта открыта на этапе проектирования, то ошибка вылазит и тогда, когда закрывается сама Дельфи с этим проектом...

Хелп!!! Что можно сделать?

0 голосов
ответил 12 Сен, 05 от Alexander1 (32,520 баллов)

If you work with ArcGIS 9.x try something like this:

'Release COM objects
        ESRI.ArcGIS.Utility.COMSupport.AOUninitialize.Shutdown()

0 голосов
ответил 14 Сен, 05 от DmitryOrlov (540 баллов)

Спасибо за совет.

Я всего две недели работаю с этой технологией и поэтому мой вопрос может показаться глупым, но все же, как мне получить ссылку на AOUninitialize.Shutdown(), если у меня имеется только один объект, связывающий меня с ArcGIS - это MapControl?

0 голосов
ответил 14 Сен, 05 от Гость (210,080 баллов)
Какая версия Delphi ?
0 голосов
ответил 15 Сен, 05 от Alexander1 (32,520 баллов)
0 голосов
ответил 15 Сен, 05 от DmitryOrlov (540 баллов)
Delphi 7, ArcGIS 9
0 голосов
ответил 16 Сен, 05 от DmitryOrlov (540 баллов)

Все, решил проблему! Спасибо за помощь!

Решается она так:

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
var
  AoInitialize: IAoInitialize;

begin
  AoInitialize:=CoAoInitialize.Create as IAoInitialize;
  AoInitialize.Shutdown;
end;

Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...