Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

Как заставить работать DelphiX и UnDelphiX под Delphi6

Delphi , Графика и Игры , DirectX и DelphiX

Как заставить работать DelphiX и UnDelphiX под Delphi6

Оформил: DeeCo

Автор: Michael Wilson

Введение

Эта статья расскажет вам как откомпилировать известные библиотеки DelphiX и UnDelphiX под Delphi 6.0. Весь процесс займет не больше 15-20 минут, кроме того вы изучите общие приемы, которые могут помочь в аналогичных ситуациях. Почему это статья, а не, скажем, патч или дополнение к Delphi? Есть две причины:

1) По соглашению об использовании библиотеки ("TERMS AND CONDITIONS OF USE"), нельзя рапространять измененные части дистрибутива DelphiX.

2) Действия, которые необходимо совершить для конвертации проекта под Delphi 6.0, делают DelphiX несовместимой для использования в Delphi 3-5.

Предупреждение: пожалуйста, сохраните резервную копию всех изменяемых файлов. Методы, изложенные здесь, протестированы на Delphi 6.0 Personal, если у вас другая редакция (например, Professional), могут возникнуть непредвиденные проблемы.

Итак, перекомпиляция:

Шаг 1: Во-первых, нужно убедиться, что у вас установлена последняя версия DelphiX. Ее можно скачать с этого сайта. После распаковки архива запустите Delphi 6. Не запускайте файл install_for?.exe!

Шаг 2: В меню File выберите пункт Open и откройте DelphiX_for5.dpk. Delphi 6 преобразует пакет к 6-й версии.

Сохраните пакет как DelphiX_for6.dpk

Шаг 3: Попробуйте нажать кнопку Install. Компилятор покажет вам ошибки, которые нужно исправить. Все ошибки относятся к модулю DXRender.pas.

[ Замечание: если вы компилируете библиотеку UnDelphiX]

Данное изменение касается вас только в случае компиляции библиотеки UnDelphiX. Этот фрагмент кода:

var
  NilGUID: TGUID absolute 0;

… нужно заменить на …

var
  NilGUID: TGUID;

[ Замечание: если вы компилируете библиотеку UnDelphiX]

Шаг 4: Первый тип ошибок, которые нужно исправить - это ошибка "Operand Size Mismatch". Всего должно быть около 40-50 ошибок такого типа. Исправить ее очень легко:

mov eax, Dest;
add eax, TDXRMachine_Color.R + 1 // bad statement

... заменяется на ...

mov eax, Dest;
add eax, BYTE(TDXRMachine_Color.R + 1) // good statement

Этот фрагмент просто извлекает младшие 8 бит TDXRMachine_Color.R - вам нужно исправить все строки, где есть ссылка на TDXRMachine_Color. Это делается очень легко с помощью пункта меню Search -> Replace...

Шаг 5: Второй тип ошибок, требующих исправления, - это "Inline Assember Syntax". Всего будет порядка 10-20 ошибок этого типа и они всегда возникают, если в исходном тексте есть упоминание об _AddTable или _SubTable. Исправляется ошибка также просто:

movzx edx, byte[offset _AddTable + edx + ebx]

... заменяется на ...

movzx edx, byte[offset(_AddTable + edx + ebx)]

После пройденных шагов компиляция должна заканчиваться только с одной фатальной ошибкой и одним предупреждением.

Шаг 6: Последняя и самая неприятная ошибка, связанная с модулем DsgnIntf.pas. Из-за нее не компилируется модуль DxReg.pas библиотеки DelphiX.

Есть два способа исправить ошибку:

1) Delphi Personal: во-первых, удалите все строки под объявлениями типов в DXReg.Pas. Затем удалите ссылки на RegisterComponentEditor и RegisterPropertyEditor в процедуре Register. Наконец, удалите весь код, который находится ниже процедуры RegisterComponents (убедитесь, что модуль по-прежнему заканчивается "end."). После вышеописанных действий модель DXReg.Pas должен выглядеть вот так:

unit DXReg;

interface

uses
  Windows, SysUtils, Classes, Forms, Dialogs, Graphics, TypInfo,
  DXDraws, DXSounds, DIB, Wave, DXInput, DXPlay, DXSprite,
  DXClass;

procedure Register;

implementation

const
  SNone = '(None)';
  SSettingImage = '&Image...';
  SSettingWave = '&Wave...';
  SDXGFileFilter = 'DXG file(*.dxg)|*.dxg|All files(*.*)|*.*';
  SDXGOpenFileFilter =
    'DXG file(*.dxg)|*.dxg|Bitmap file(*.bmp)|*.bmp|All files(*.*)|*.*';
  SDXWFileFilter = 'DXW file(*.dxw)|*.dxg|All files(*.*)|*.*';
  SDXWOpenFileFilter =
    'DXW file(*.dxw)|*.dxw|Wave file(*.wav)|*.wav|All files(*.*)|*.*';
  SSinglePlayer = '&Single player';
  SMultiPlayer1 = 'Multi player &1';
  SMultiPlayer2 = 'Multi player &2';
  SOpen = '&Open...';
  SSave = '&Save..';

procedure Register;
begin
  RegisterComponents('DelphiX',
    [TDXDraw,
    TDXDIB,
      TDXImageList,
      TDX3D,
      TDXSound,
      TDXWave,
      TDXWaveList,
      TDXInput,
      TDXPlay,
      TDXSpriteEngine,
      TDXTimer,
      TDXPaintBox]);
end;

end.

С таким решением проблемы вы не сможете использовать редактор свойств, включенный в DelphiX.

2) Delphi Professional: решение проблемы с профессиональной версией Delphi была подсказана Tommy "QuazzeMan" Jonsson:

a) В модуле DXReg.pas замените ссылку на DsgnIntf в списке USES на DesignIntf.
b) Добавьте DesignEditors в список USES модуля DXReg.Pas
c) Добавьте DesignIDE в секцию REQUIRED пакета

Шаг 7: Все, можно наслаждаться работой DelphiX и UnDelphiX в шестой версии Delphi.

Статья Как заставить работать DelphiX и UnDelphiX под Delphi6 раздела Графика и Игры DirectX и DelphiX может быть полезна для разработчиков на Delphi и FreePascal.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: DirectX и DelphiX ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100
28.03.2024 23:39:55/0.036865949630737/2