![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
убийство спрайтов
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 вылетает где угодно и когда угодно, что делает её поиск задачей не из лёгких...