|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.11.2012, 15:52 | #1 |
Пользователь
Регистрация: 13.05.2009
Сообщений: 42
|
(WebBrowser.Document as IPersistStreamInit).Load и AccessViolation
Добрый день уважаемые коллеги!
Есть поток (thread) который с помощью функции InternetGetConnectedState раз в секунду мониторит состояние интернет подключения. Форма подписана на события изменения состояний этого потока (OnConnectionLost и OnConnectionRestored). Есть TWebBrowser c картами google (компонент от тмс-софтвэйр). Есть форма, на которой есть TWebBrowser c картами и у которой есть функция BuildGUI, которая вызывается при потере/возобновлении интернет-соединения. Задача - если соединение потеряно выводить в браузере сообщение об этом. Если соединение возобновлено - загружать гугл-карты по новой. Проблема - Acess Violation внутри компонента, но только тогда, когда метод Launch(который загружает карту из потока (stream)) вызывается из процедуры BuildGUI. Если тот же код прописать на кнопке, все происходит правильно! Код процедуры BuildGUI с комментариями: Код:
Код:
Спасибо |
28.11.2012, 16:13 | #2 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,426
|
1. у IPersistStreamInit нету метода Init вы дергаете за не существующую ниточку.
2. По скольку вы дергаете интерфейс, а его экземпляра у владельца вы не получили, то вы стучитесь опять в закрытую дверь. |
28.11.2012, 16:40 | #3 |
Пользователь
Регистрация: 13.05.2009
Сообщений: 42
|
Спасибо за ответ!
1) Вы имеете ввиду метод InitNew у IPersistStreamInit? Если да, то разве он не вызывается в методе Navigate TWebBrowser, который дергается выше? 2) Можно поподробнее? Напомню, что когда я провожу эти операции вручную (т.е. ситуация 1 в 1, только вместо процедуры BuildGUI - 1 кнопка, которая прогоняет этот же код) все отлично! |
29.11.2012, 06:17 | #4 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
Покажите, откуда вызывается BuildGUI
Наверное, как обычно, сперва в formcreate каком-нибудь вызываете билдгуи, а только потом создаёте экземпляр wgmMap. Что говорит трассировка ? |
29.11.2012, 09:33 | #5 |
Пользователь
Регистрация: 13.05.2009
Сообщений: 42
|
Нет, с такой детской ошибкой я бы не стал заходить на форум
Ошибка происходит когда форма уже создана и экземпляр wgmMap инициализирован. Трассировка говорит что указатели у aStream, AStreamAdapter, AStreamInit и FWebBrowser не пустые. BuildGUI вызывается отсюда (форма-родитель) Код:
|
29.11.2012, 11:24 | #6 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,882
|
Ну, а что трассировка говорит про АВ ? на каком этапе, в каком модуле/строке. Тип АВ - чтение/запись, какой адрес "мусор" или "ноль" ?
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
load data | kilogram | SQL, базы данных | 7 | 07.07.2012 12:40 |
WebBrowser.OleObject.Document.All.Item(i).InnerTex t очень долго | tebeen | Работа с сетью в Delphi | 5 | 09.03.2010 14:04 |
WebBrowser работа с oleobject.document..... | rangel | Работа с сетью в Delphi | 0 | 09.03.2010 14:01 |
Запуск Load.dll (бывшая Load.exe) в дереве проц-ов, Как запустить прогой на C# .dll-ку | kapustin | Общие вопросы .NET | 10 | 23.09.2009 22:20 |