У меня при закрытии программы вылетают две одинаковых ошибки типа Access Violation по адресу.. и так далее. Я использую такие вот переменные:
| Код | var FDD :IDirectDraw7; FDDSPrimary, FDDSMap, FDDSChipset, FDDSTile, FDDSMinimap :IDirectDrawSurface7; FDDClipper :IDirectDrawClipper;
|
Освобожаю при закрытии в порядке, обратном порядку создания:
| Код | if Assigned(FDD) then begin if Assigned(FDDSMap) then FDDSMap:=nil; if Assigned(FDDSChipset) then FDDSChipset:=nil; if Assigned(FDDSMinimap) then FDDSMinimap:=nil; //??? if Assigned(FDDSPrimary) then FDDSPrimary:=nil; //??? if Assigned(FDDClipper) then FDDClipper:=nil; FDD:=nil; //??? end; Application.Terminate;
|
Самое интересное: ошибки остаются, если хотя бы одна из строк, помеченных //??? не закомментирована. Наличие/отсутствие других строк на ошибки не влияют. Если убираю все три строки, ошибки исчезают. Подскажите, с чем может быть это связано и как этого избежать? Заранее благодарен. |