Приветствую Вас Гость | RSS

Меню сайта

Реклама

Категории раздела
Bitmap [50]
Canvas [0]
DirectX и DelphiX [39]
GIF [3]
ICO [24]
JPEG [14]
MetaFile [6]
OpenGL [9]
ScreenSaver и ScreenMate [13]
Векторная графика [2]
Графика [37]
Изображения [0]
Картография [6]
Компоненты и Графика [0]
Создание игр [17]
Цвета и Палитра [0]
Шрифты [0]

Наш опрос
Оцените мой сайт
Всего ответов: 30

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Форма входа

Главная » Статьи » Графика и Игры » DirectX и DelphiX

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

Эта статья расскажет вам как откомпилировать известные библиотеки 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.

Категория: DirectX и DelphiX | Добавил: Angel (12.07.2008)
Просмотров: 413 | Рейтинг: 0.0/0
  Delphi Lab   Главная   Регистрация   Вход  
Интересная Цитата

Поиск

Магазин


Copyright MyCorp © 2025 Хостинг от uCoz