Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> inaccessible value, Как обойти Inaccessible если оно возникл 
V
    Опции темы
Aehn
Дата 4.9.2008, 10:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 24.4.2008

Репутация: нет
Всего: нет



При работе программы обнаружилось исключение access violation иногда вылетает out of memory
При более детальном анализе обнаружилось, что во время работы некоторые поля являются inaccessible.
Я попытался найти, где это объект не создается, или разрушается, скажем, но кода много, и времени нет. Поскольку ошибка возникает очень редко, мне было предложено не искать причину ошибки, а просто отловить то место, где она возникает и вывести соответствующее сообщение.

Здесь у меня возникли проблемы. На nil такой объект не проверишь, потому что его нет в памяти вообще, а метод assigned не работает для некоторых свойств поскольку имеется несоответствие типов.

Может скажет, как проделать эту процедуру?
PM MAIL   Вверх
Frees
Дата 4.9.2008, 10:51 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2233
Регистрация: 2.12.2005
Где: Екатеринбург

Репутация: 16
Всего: 54



inaccessible value это тебе Watch так пишет? если да то поставь галку Allow function calls в Wath Properties

еще в свойствах проекта поставь галку Use Debug dcus может тогда увидиш где ошибка


--------------------
Кольцов Виктор Владимирович
PM MAIL ICQ   Вверх
Aehn
Дата 4.9.2008, 17:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 24.4.2008

Репутация: нет
Всего: нет



Я попробовал сделать нечто типа
Код

          try
         An.A1 := SelectedR.A1;    (* место, где возникает исключение *)
         An.A2 := SelectedR.A2;    (* место, где возникает исключение *)
         An.A3 := SelectedR.A3;
         An.A4 := SelectedR.A4;
            except
               on EAccessViolation do begin
                  ShowMessage('The problems with inaccessible values');
                  exit;
               end;
          end;

Но  это "нечто" застревает на первой же строчке. Создается исключение, но оно не обрабатывается в блоке except ... end;

Это сообщение отредактировал(а) Aehn - 4.9.2008, 17:26
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0663 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.