Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

убийство спрайтов


KiberKot ©   (2006-03-27 16:03:00) 

При закрытии приложения возникает ошибка
Access violation at address 04059a4 in module 'Progect1.exe'. Read of address 00000008

Ошибка возникает при очистке спрайтов
в этом коде:

 if Assigned(FDD) then begin
     if Assigned(FDDPal) then FDDPal := nil;
     for i := 0 to NumSprites - 1 do begin
         if Assigned(spr [i].FSpriteSurface) then begin
            spr [i].FSpriteSurface._Release ;
            spr [i].FSpriteSurface := nil;
         end;
     spr [i]:=nil;
     end;

При удалении Release возникает еще одна ошибка


OSokin   (2006-03-31 18:25:00) [1]

Наверное просто спрайты уничтожаются, а ссылки на них остаются. Проверь.


Darthman   (2006-03-27 18:00:00) [2]

spr [i].FSpriteSurface._Release ;
spr [i].FSpriteSurface := nil;

Одно из этих действий лишнее. А именно _Release.


XProger   (2006-03-27 17:02:00) [3]

В Delphi интерфейсы сами себя уничтожают при необходимости :) Так что, _Release вызывать не надо.
Ошибка возможно не здесь, а при отрисовке или других операциях, в которых не проверяется возможность spr[i] = nil. AV вылетает где угодно и когда угодно, что делает её поиск задачей не из лёгких...


Наверх

Титульная страница Поиск, карта сайта Написать письмо