Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.11.2010, 19:06   #1
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию Ошибка: accses violation address 004617b

Код:
procedure TForm1.ViewClientWindowExecute(Sender: TObject);
var DockWindow: TDockForm;
begin
DockWindow := DockWindows[(sender as TComponent).Tag];
with DockWindow do //ошибка примерно тут
if HostDockSite is TPageControl
then TTabDockHost(HostDockSite.Owner).Show
else if (HostDockSite is TConjoinDockHost) and not HostDockSite.Visible then begin
HostDockSite.Show;
DockWindow.Show;
end else if (HostDockSite is TPanel) and (((HostDockSite.Height = 0) or (HostDockSite.Width = 0))) then Form1.ShowDockPanel(
HostDockSite as TPanel, True, DockWindow)
else DockWindow.Show;
end;
Что в данной процедуре не так?
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)
Vanta11a вне форума Ответить с цитированием
Старый 25.11.2010, 19:08   #2
BOBAH13
Android Developer
Старожил Подтвердите свой е-майл
 
Аватар для BOBAH13
 
Регистрация: 19.02.2007
Сообщений: 3,708
По умолчанию

1. (sender as TComponent).Tag - указывает на Integer ?
2. (sender as TComponent).Tag as Integer - реальное значение в диапазоне от 0 до Length(DockWindows) ? (т.е. входит в диапазон допустимых индексов для массива DockWindows)

UPD:
Код:
if HostDockSite is TPageControl
then TTabDockHost(HostDockSite.Owner).Show
Честное слово, столько ссылок на ссылки и с надеждой что все будет работать верно, я не видел. Тут столько мест где могут быть NIL или вообще черт знает что за адреса. Тут явно не верный подход к проектированию приложения.

Что на счет исправления и поиска ошибки, комментируйте все строки, потом по одной проверяйте на корректность адреса, чтобы не nil и чтобы был валидный.

Последний раз редактировалось BOBAH13; 25.11.2010 в 19:19.
BOBAH13 вне форума Ответить с цитированием
Старый 25.11.2010, 19:15   #3
Vanta11a
Lawful Evil
Участник клуба
 
Аватар для Vanta11a
 
Регистрация: 13.05.2008
Сообщений: 1,208
По умолчанию

1). да
2). да

Можно благодарить препода, который требует, чтобы "Код по примеру!"
Алгоритм - бесплатен. Поиск багов - бесплатен. Реализация алгоритма - за отдельную плату.
На форуме помогают советами и объясняют, а не пишут на халяву программы, лабы, курсачи и т.д. (c)

Последний раз редактировалось Vanta11a; 25.11.2010 в 19:23.
Vanta11a вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Access violation at address 00478D0E in module 'Project1.exe'. Write of address 00000000 fondreykus-1 Общие вопросы Delphi 5 27.01.2010 14:25
почему может возникать ошибка access violation...: write of address при создании динамического массива sleevman Помощь студентам 16 03.11.2009 20:49
Access violation at address... Ralf_ru Помощь студентам 13 05.04.2009 05:20
Access violation at address.. RegentM Общие вопросы Delphi 4 01.11.2007 03:46
Ошибка: "Access violation at address 00454F01 in module 'Project1.exe'. Read of address 00000000. Fen1x Общие вопросы Delphi 8 13.10.2007 20:13