Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.190.253.22] |
|
Сообщ.
#1
,
|
|
|
Здравствуйте.
Ситуация такая - идёт процесс адаптирования исходников одного проекта к работе и в Дельфи и в Лазарусе... И вот я добрался до работы с DirectDraw: функция DirectDrawCreateEx при вызове сразу генерит ошибку. Код выглядит так: DirectDrawCreateEx(nil,m_ddraw,{$IFDEF FPC}@{$ENDIF}IID_IDirectDraw7,nil); Посмотрев внимательно на объявление этой функции в файле p_ddraw в Лазарусе и сравнив его с Дельфовым DirectDraw, стало понятно следующее: эти функции объявлены по разному - в одном случае параметр iid это структура(D), в другом указатель(L). Переобъявил эту функцию таким образом как она объявлена в D и вроде всё стало норм, но выскочило в другом месте. После внимательного изучения этих двух файлов, оказалось что во многих объявлениях как экспортных функций, так и методов интерфейсов в D структуры, в L - указатели. Подскажите, пожалуйста, что нужно предпринять, чтобы можно было работать в Лазарусе с DirectDraw? Вариант с копированием файла DirectDraw и использованием его после лёгких правок в Лазарусе, уже опробовал - это привело к тому, что интерефйсы в Лазарусе просто не создаются там где создаются в Дельфях. |
Сообщ.
#2
,
|
|
|
Скачай JEDY там уже адаптированно под лазарь.
|
Сообщ.
#3
,
|
|
|
Скачал, попробовал - результат такой же как и при использовании дельфовых файлов в Лазарусе.
Курение исходников показало следующее - автор обёртки DirectDraw в Дельфих и джедаях один и тот же. Исходники отличаются лишь комбинацией ифдефов. Единственный класс, который использует DirectDrawCreateEx в джедаевском репозитории, это TDisplay. Но сам этот класс никем во всей ветке master у джедаев не используется. Если у вас есть пример, дайте, пожалуйста, ознакомиться. |
Сообщ.
#4
,
|
|
|
Возможно нашёл корень зла. В Дельфях все структуры для работы с ДД не упакованы, а в Лазарусе - упакованы. Но я убираю ключевое слово packed и это ничего не меняет в их размерах.
Подскажите, пожалуйста, директиву компилятора для включения-выключения упаковки рекордов? Яндексение успеха пока не принесло. |
Сообщ.
#5
,
|
|
|
Директивы такой нет, есть префикс packed в декларации. Сверятся надо со структурами в MSDN
|
Сообщ.
#6
,
|
|
|
$ALIGN ?
|