Влад ЭнгельгардтСтатьи

DelphiX под Delphi6.

Автор:

Автор: Michael Wilson
Эта статья покажет вам, как переделать DelphiX под Delphi 6.0. Этот процесс займёт 15-20 минут.

Шаг 1:

После распаковки DelphiX в любую директорию, запустите Delphi6. Не пытайтесь запустить Install_for?.exe или другие виды установки.

Шаг 2:

Зайдите в File...Open: DelphiX_for5.dpk и Delphi 6 преобразует пакет для вас.

Изображение

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

Шаг 3:

Нажмите кнопку Install. Компилятор найдёт ошибки. Все они в файле DXRender.pas.

Вот фрагмент:

var
  NilGUID : TGUID absolute 0;

Надо изменить на :

var
 NilGUID : TGUID;

Шаг 4:

Первый тип ошибок - несовпадение ординат в машинном коде. Где-то 40 - 50 Ошибок такого типа.

Изображение

Вот как их исправить...

mov eax,Dest; add eax,TDXRMachine_Color.R+1 // Плохой сегмент
изменить на:

mov eax,Dest; add eax,BYTE(TDXRMachine_Color.R+1) // Хороший сегмент

Вам это придётся делать при каждой ссылке ASM на TDXRMachine_Color. Вы можете заменять эти строки при помощи Search and Replace.

Шаг 5:

Второй тип ошибок нам придётся корректировать, они связаны с синтаксисом ассемблера. Есть 10 - 20 ошибок этого типа, и все они происходят рядом с _AddTable и _SubTable.

Вот пример как исправить их...

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

Изменить так:

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

В конце компилятор покажет одно предупреждение и одну фатальную ошибку.

Шаг 6:

И последняя ошибка из-за DsgnIntf.

Изображение

Есть два пути решения этой проблемы:

Без IDE редактирования:

Переделайте 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.

С редактированием IDE (Экспертам):
1) В DXReg.pas измените в USES 'DsgnIntf' на 'DesignIntf'.
2) Добавить 'DesignEditors' в uses и в unit где понравится.
3) Добавить 'DesignIDE' в разделе REQUIRES в пакете DelphiX_for6.dpk. Для этого необходимо открыть его в режиме 'Project/View Source' и дописать где нужно.

Это проверено и работает во всех версиях Delphi 6.

Англоязычная версия статьи находится по адресу: http://turbo.gamedev.net/delphixd6.asp.

Автор: Michael Wilson ().

15 июля 2006 (Обновление: 13 фев 2007)