![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с овобождением интерфейсов в DirectShow [D5, Win95/98]
AlexZav © (2002-04-25 17:39:00)При попытке освободить интерфейсы возникает белое окно с сообщением об ошибке в приложении. У меня стоит версия DirectShow Debug, которая тоже выдает сообщение об ошибке ("освободить интерфес не удалось"). В коде все правильно, это точно. Кстати, утилитка от DirectShow Graph Edit тоже глючит.
Если Вы с этим встречались, помогите. Заранее благодарен.
KilkennyCat (2002-04-27 10:40:00) [1]Объявляем:
FD3D : IDIRECT3D8;
FD3DDevice : IDIRECT3DDEVICE8;
FD3DVB : IDIRECT3DVERTEXBUFFER8;
Перед созданием (на всякий пожарный):
FD3DDevice := nil;
FD3DVB := nil;
FD3D := nil;
При завершении работы:
if Assigned (FD3DVB) then begin
FD3DVB._Release;
FD3DVB := nil;
end;
if Assigned (FD3DDevice) then begin
FD3DDevice._Release;
FD3DDevice := nil;
end;
if Assigned (FD3D) then begin
FD3D._Release;
FD3D := nil;
end;
Иногда метод _Release некорректно работает в Delphi, тогда его можно убрать, оставивив только присвоение nil.
AlexZav (2002-04-26 20:28:00) [2]Что значит проверять нужно (можно) ли освобождать. Как это делается ?
KilkennyCat (2002-04-26 03:33:00) [3]Если ошибка, значит в коде не все верно. Проверьте порядок освобождения (он должен быть обратный порядку создания).
А еще лучше, перед освобождением проверять, а нужно (можно) ли это. У меня частенько такое выскакивает, и всегда проблема в порядке.