![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблемы с заголовочными файлами DirectX SDK!
Вась-Вась © (2004-11-18 16:40:00)Господа мастера! Решил изучить DirectX в «чистом» виде, используя заголовочные файлы.
Но в первом же проекте при ссылке на DirectDraw.pas в нём, падла, возникли следующие ошибки:
1.в строке "NilGUID : TGUID absolute 0;"
выскакивает ошибка "Variable name expected".
2.в строке и ей подобных "lpDDSZBufferDest : PDirectDrawSurface;"
выскакивает ошибка "Type 'IDirectDrawSurface' needs
finalization - not allowed in variant record".
3.в описании типа
TRefGUID = packed record
case integer of
1: (guid : PGUID);
2: (dwFlags : DWORD);
end;
выскакивает ошибка "Unsafe type 'TRefGUID'".
Что это за бяка и как с ней бороться?
Спасибо, что помогли и не послали в лес по ягоды!
Sphinx (2004-11-19 09:08:00) [1]> 2.в строке и ей подобных "lpDDSZBufferDest : PDirectDrawSurface;"
> выскакивает ошибка "Type 'IDirectDrawSurface' needs
> finalization - not allowed in variant record".
Была такая же фигня к заголовками от DX8 под Delphi7, скачал заголовки от DX9 проблема изчезла. Объяснить не могу, просто излагаю факт :)
Вась-Вась (2004-11-18 21:47:00) [2]>Pavia © (18.11.04 18:19) [2]
>Попробуй найти нормальный фаил.Или поставь другую версию delphi.
А у меня и так 7-я стоит.
По поводу первого вопроса:
>NilGUID :TGUID= '{00000000-0000-0000-0000-000000000000}';
всё хорошо, проглатывает, а вот что касается второго вопроса, то такие строки у меня в модуле уже написаны, но не помогает! А у тебя с такими строчками работает? Может, скинешь на мыло свой DirectDraw.pas? Я буду долго благодарить!
мыло: warrior1987@mail.ru
Pavia (2004-11-18 18:19:00) [3]Попробуй найти нормальный фаил.Или поставь другую версию delphi.
1 тут легко
NilGUID :TGUID= '{00000000-0000-0000-0000-000000000000}';
2 Попробуй так
// Delphi 5 can't handle interface in variant records
// so we have to use pointers instead (which can be type-casted into interfaces):
{$IFDEF VER130}
PDirectDrawSurface = Pointer;
{$ELSE}
{$IFDEF VER140} // D6, TP 14
PDirectDrawSurface = Pointer;
{$ELSE}
PDirectDrawSurface = IDirectDrawSurface;
{$ENDIF}
{$ENDIF}
3 Даже не знаю.
Bryke (2004-11-18 17:58:00) [4]У меня была такая же хрень. Париться я не стал и послал DirectDraw на несколько веселых букв. Взялся за Direct3D. Двухмерную графику с помощью Direct3D ничем не сложнее реализовывать, чем с помощью DirectDraw, да и возможностей намного больше.