На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
! user posted image
Пожалуйста, выделяйте текст программы тегом [сode=pas] ... [/сode]. Для этого используйте кнопку [code=pas] в форме ответа или комбобокс, если нужно вставить код на языке, отличном от Дельфи/Паскаля.

Соблюдайте общие правила форума

Следующие вопросы задаются очень часто, подробно разобраны в FAQ и, поэтому, будут безжалостно удаляться:
1. Преобразовать переменную типа String в тип PChar (PAnsiChar)
2. Как "свернуть" программу в трей.
3. Как "скрыться" от Ctrl + Alt + Del (заблокировать их и т.п.)
4. Как запустить программу/файл? (и дождаться ее завершения)
5. Как перехватить API-функции, поставить hook? (перехват сообщений от мыши, клавиатуры - внедрение в удаленное адресное прстранство)
... (продолжение следует) ...

Внимание:
Попытки открытия обсуждений реализации вредоносного ПО, включая различные интерпретации спам-ботов, наказывается предупреждением на 30 дней.
Повторная попытка - 60 дней. Последующие попытки - бан.
Мат в разделе - бан на три месяца...

Полезные ссылки:
user posted image MSDN Library user posted image FAQ раздела user posted image Поиск по разделу user posted image Как правильно задавать вопросы


Выразить свое отношение к модераторам раздела можно здесь: user posted image Rouse_, user posted image Krid

Модераторы: Rouse_, Krid
  
> DirectDraw в Lazarus
Здравствуйте.
Ситуация такая - идёт процесс адаптирования исходников одного проекта к работе и в Дельфи и в Лазарусе...
И вот я добрался до работы с DirectDraw: функция DirectDrawCreateEx при вызове сразу генерит ошибку. Код выглядит так:
ExpandedWrap disabled
    DirectDrawCreateEx(nil,m_ddraw,{$IFDEF FPC}@{$ENDIF}IID_IDirectDraw7,nil);

Посмотрев внимательно на объявление этой функции в файле p_ddraw в Лазарусе и сравнив его с Дельфовым DirectDraw, стало понятно следующее: эти функции объявлены по разному - в одном случае параметр iid это структура(D), в другом указатель(L). Переобъявил эту функцию таким образом как она объявлена в D и вроде всё стало норм, но выскочило в другом месте. После внимательного изучения этих двух файлов, оказалось что во многих объявлениях как экспортных функций, так и методов интерфейсов в D структуры, в L - указатели.
Подскажите, пожалуйста, что нужно предпринять, чтобы можно было работать в Лазарусе с DirectDraw?

Вариант с копированием файла DirectDraw и использованием его после лёгких правок в Лазарусе, уже опробовал - это привело к тому, что интерефйсы в Лазарусе просто не создаются там где создаются в Дельфях.
Сообщение отредактировано: Lem0nti -
Скачай JEDY там уже адаптированно под лазарь.
Скачал, попробовал - результат такой же как и при использовании дельфовых файлов в Лазарусе.
Курение исходников показало следующее - автор обёртки DirectDraw в Дельфих и джедаях один и тот же. Исходники отличаются лишь комбинацией ифдефов. Единственный класс, который использует DirectDrawCreateEx в джедаевском репозитории, это TDisplay. Но сам этот класс никем во всей ветке master у джедаев не используется.
Если у вас есть пример, дайте, пожалуйста, ознакомиться.
Возможно нашёл корень зла. В Дельфях все структуры для работы с ДД не упакованы, а в Лазарусе - упакованы. Но я убираю ключевое слово packed и это ничего не меняет в их размерах.
Подскажите, пожалуйста, директиву компилятора для включения-выключения упаковки рекордов? Яндексение успеха пока не принесло.
Директивы такой нет, есть префикс packed в декларации. Сверятся надо со структурами в MSDN
1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
0 пользователей:


Рейтинг@Mail.ru
[ Script execution time: 0,0324 ]   [ 20 queries used ]   [ Generated: 4.12.21, 05:31 GMT ]