XL Report и Delphi Embarcadero XE3


AfalinaSoft - разработчик XL Report приказала долго жить к великому нашему сожалению. К сожалению, так как пакет действительно хороший. Он избавил нас от многих проблем и сократил время на разработку. Но время идет, Micrisoft перестает поддерживать XP, вынуждает переходить на другие средства разработки. Появление 64-разрядных приложений и оперционных систем вынуждает покупать новые средства разрботки. Пришлось раскошелиться на Delphi Embarcadero XE3. И, естетственно, было желание сэкономить время, связанное с переносом старых, работоспособных приложений, требующих доработки, на новую платформу. Все попытки купить пакет не увенчались успехом.

Поковыряв пакет, я понял, что проблемы в опциях компилятора, которые надо было грамотно проставить. Мне самому это не удалось, но на форуме ru-board бросили исходники для компиляции (изменения коснулись файла xlcDefs.inc), а дальше уже все стало делом техники. Вот исходный текст для официальной установочной версии от AfalinoSoft:

{ Get compiler version }

{$IFDEF BCB} { C++Builder }
  {$DEFINE XLR_BCB}
  {$ObjExportAll On}
{$ENDIF}

{$IFDEF VER120} { Delphi 4.0 }
  {$DEFINE XLR_VCL4}
{$ENDIF VER120}

{$IFDEF VER125} { C++Builder 4.0 }
  {$DEFINE XLR_VCL4}
{$ENDIF VER125}

{$IFDEF VER130} { Delphi 5.0 or C++Builder 5.0 }
  {$DEFINE XLR_VCL5}
{$ENDIF VER130}

{$IFDEF VER140} { Delphi 6.0 or C++Builder 6.0 }
  {$DEFINE XLR_VCL6}
  {$WARN SYMBOL_PLATFORM OFF}
{$ENDIF}

{$IFDEF VER150} { Delphi 7.0 }
  {$DEFINE XLR_VCL7}
  {$WARN SYMBOL_DEPRECATED OFF}
  {$WARN SYMBOL_PLATFORM OFF}
  {$WARN UNIT_PLATFORM OFF}
  {$WARN UNIT_DEPRECATED OFF}
  {$WARN UNSAFE_TYPE OFF}
  {$WARN UNSAFE_TYPE OFF}
  {$WARN UNSAFE_CODE OFF}
  {$WARN UNSAFE_CAST OFF}
{$ENDIF}

{ Compiler defines }

//                                   DEBUG options - comment before release
// {$DEFINE XLR_DEBUG}

{ Product defines }

//                                    XL Report.VCL
{$DEFINE XLR_VCL}
//                                    Active XL Report
// {$DEFINE XLR_AX}
//                                    XL Report - MS Project Edition
// {$DEFINE XLR_MSP}
//                                    XL Report.NET
// {$DEFINE XLR_NET}

{ Licence defines }

//                                    Trial
// {$DEFINE XLR_TRIAL}
//                                    Standard (without source)
// {$DEFINE XLR_STD}
//                                    Developer (with source)
{$DEFINE XLR_DEV}
//                                    Professional
// {$DEFINE XLR_PRO}

//                                    ASProtect
// XL Report.AX
{$IFDEF XLR_AX}
  {$IFNDEF XLR_DEV}
    {$DEFINE ASPROTECT}
  {$ENDIF}
{$ENDIF}
// XL Report.NET
{$IFDEF XLR_NET}
  {$IFNDEF XLR_DEV}
    {$DEFINE ASPROTECT}
  {$ENDIF}
{$ENDIF}
// XL Report.MSP
{$IFDEF XLR_MSP}
  {$IFNDEF XLR_DEV}
    {$DEFINE ASPROTECT}
  {$ENDIF}
{$ENDIF}

{ Compiler directives }

{$B-} {- Complete Boolean Evaluation }
{$R-} {- Range-Checking }
{$V-} {- Var-String Checking }
{$T-} {- Typed @ operator }
{$X+} {- Extended syntax }
{$P+} {- Open string params }
{$J+} {- Writeable structured consts }
{$H+} {- Use long strings by default }

Текст с исправлениями :
{Собcтвенные исправления:
  - добавлена поддержка Delphi 2007 (раздел "$IFDEF VER185")
  - добавлена поддержка Delphi 2009 (раздел "$IFDEF VER200")
  - добавлена поддержка Delphi 2010 (раздел "$IFDEF VER210")
  - добавлена поддержка Delphi 2011 (XE) (раздел "$IFDEF VER220")
  - добавлена поддержка Delphi XE2 (раздел "$IFDEF VER230")
  - добавлена поддержка Delphi XE3 (раздел "$IFDEF VER240")
  - добавлены параметры условной компиляции для различных версий Delphi - XLR_Dxx
  
(и поставлен комментарий //изменено GoldMedium)}

{ Get compiler version }

{$IFDEF BCB} { C++Builder }
  {$DEFINE XLR_BCB}
  {$ObjExportAll On}
{$ENDIF}

{$IFDEF VER120} { Delphi 4.0 }
  {$DEFINE XLR_VCL4}
{$ENDIF VER120}

{$IFDEF VER125} { C++Builder 4.0 }
  {$DEFINE XLR_VCL4}
{$ENDIF VER125}

{$IFDEF VER130} { Delphi 5.0 or C++Builder 5.0 }
  {$DEFINE XLR_VCL5}
{$ENDIF VER130}

{$IFDEF VER140} { Delphi 6.0 or C++Builder 6.0 }
  {$DEFINE XLR_VCL6}
  {$WARN SYMBOL_PLATFORM OFF}
{$ENDIF}

{$IFDEF VER150} { Delphi 7.0 }
  {$DEFINE XLR_VCL7}
  {$WARN SYMBOL_DEPRECATED OFF}
  {$WARN SYMBOL_PLATFORM OFF}
  {$WARN UNIT_PLATFORM OFF}
  {$WARN UNIT_DEPRECATED OFF}
  {$WARN UNSAFE_TYPE OFF}
  {$WARN UNSAFE_TYPE OFF}
  {$WARN UNSAFE_CODE OFF}
  {$WARN UNSAFE_CAST OFF}
{$ENDIF}

//изменено GoldMedium - старт
{$IFDEF VER185} { CodeGear Delphi 2007 }
  {$DEFINE XLR_VCL7}
  {$DEFINE XLR_D4}
  {$DEFINE XLR_D5}
  {$DEFINE XLR_D6}
  {$DEFINE XLR_D7}
  {$DEFINE XLR_D110}
  {$WARN SYMBOL_DEPRECATED OFF}
  {$WARN SYMBOL_PLATFORM OFF}
  {$WARN UNIT_PLATFORM OFF}
  {$WARN UNIT_DEPRECATED OFF}
  {$WARN UNSAFE_TYPE OFF}
  {$WARN UNSAFE_TYPE OFF}
  {$WARN UNSAFE_CODE OFF}
  {$WARN UNSAFE_CAST OFF}
{$ENDIF}

{$IFDEF VER200} { CodeGear Delphi 2009 }
  {$DEFINE XLR_VCL7}
  {$DEFINE XLR_D4}
  {$DEFINE XLR_D5}
  {$DEFINE XLR_D6}
  {$DEFINE XLR_D7}
  {$DEFINE XLR_D110}
  {$DEFINE XLR_D120}
  {$WARN SYMBOL_DEPRECATED OFF}
  {$WARN SYMBOL_PLATFORM OFF}
  {$WARN UNIT_PLATFORM OFF}
  {$WARN UNIT_DEPRECATED OFF}
  {$WARN UNSAFE_TYPE OFF}
  {$WARN UNSAFE_TYPE OFF}
  {$WARN UNSAFE_CODE OFF}
  {$WARN UNSAFE_CAST OFF}
{$ENDIF}

{$IFDEF VER210} { CodeGear Delphi 2010 }
  {$DEFINE XLR_VCL7}
  {$DEFINE XLR_D4}
  {$DEFINE XLR_D5}
  {$DEFINE XLR_D6}
  {$DEFINE XLR_D7}
  {$DEFINE XLR_D110}
  {$DEFINE XLR_D120}
  {$DEFINE XLR_D140}
  {$WARN SYMBOL_DEPRECATED OFF}
  {$WARN SYMBOL_PLATFORM OFF}
  {$WARN UNIT_PLATFORM OFF}
  {$WARN UNIT_DEPRECATED OFF}
  {$WARN UNSAFE_TYPE OFF}
  {$WARN UNSAFE_TYPE OFF}
  {$WARN UNSAFE_CODE OFF}
  {$WARN UNSAFE_CAST OFF}
{$ENDIF}

{$IFDEF VER220} { CodeGear Delphi 2011 (XE) }
  {$DEFINE XLR_VCL7}
  {$DEFINE XLR_D4}
  {$DEFINE XLR_D5}
  {$DEFINE XLR_D6}
  {$DEFINE XLR_D7}
  {$DEFINE XLR_D110}
  {$DEFINE XLR_D120}
  {$DEFINE XLR_D140}
  {$DEFINE XLR_D150}
  {$WARN SYMBOL_DEPRECATED OFF}
  {$WARN SYMBOL_PLATFORM OFF}
  {$WARN UNIT_PLATFORM OFF}
  {$WARN UNIT_DEPRECATED OFF}
  {$WARN UNSAFE_TYPE OFF}
  {$WARN UNSAFE_TYPE OFF}
  {$WARN UNSAFE_CODE OFF}
  {$WARN UNSAFE_CAST OFF}
{$ENDIF}

{$IFDEF VER230} { Delphi XE2 }
  {$DEFINE XLR_VCL7}
  {$DEFINE XLR_D4}
  {$DEFINE XLR_D5}
  {$DEFINE XLR_D6}
  {$DEFINE XLR_D7}
  {$DEFINE XLR_D110}
  {$DEFINE XLR_D120}
  {$DEFINE XLR_D140}
  {$DEFINE XLR_D150}
  {$DEFINE XLR_D160}
  {$WARN SYMBOL_DEPRECATED OFF}
  {$WARN SYMBOL_PLATFORM OFF}
  {$WARN UNIT_PLATFORM OFF}
  {$WARN UNIT_DEPRECATED OFF}
  {$WARN UNSAFE_TYPE OFF}
  {$WARN UNSAFE_TYPE OFF}
  {$WARN UNSAFE_CODE OFF}
  {$WARN UNSAFE_CAST OFF}
{$ENDIF}

{$IFDEF VER240} { Delphi XE3 }
  {$DEFINE XLR_VCL7}
  {$DEFINE XLR_D4}
  {$DEFINE XLR_D5}
  {$DEFINE XLR_D6}
  {$DEFINE XLR_D7}
  {$DEFINE XLR_D110}
  {$DEFINE XLR_D120}
  {$DEFINE XLR_D140}
  {$DEFINE XLR_D150}
  {$DEFINE XLR_D160}
  {$DEFINE XLR_D170}
  {$WARN SYMBOL_DEPRECATED OFF}
  {$WARN SYMBOL_PLATFORM OFF}
  {$WARN UNIT_PLATFORM OFF}
  {$WARN UNIT_DEPRECATED OFF}
  {$WARN UNSAFE_TYPE OFF}
  {$WARN UNSAFE_TYPE OFF}
  {$WARN UNSAFE_CODE OFF}
  {$WARN UNSAFE_CAST OFF}
{$ENDIF}
//изменено GoldMedium - финиш

{ Compiler defines }

//                                   DEBUG options - comment before release
// {$DEFINE XLR_DEBUG}

{ Product defines }

//                                    XL Report.VCL
{$DEFINE XLR_VCL}
//                                    Active XL Report
// {$DEFINE XLR_AX}
//                                    XL Report - MS Project Edition
// {$DEFINE XLR_MSP}
//                                    XL Report.NET
// {$DEFINE XLR_NET}

{ Licence defines }

//                                    Trial
// {$DEFINE XLR_TRIAL}
//                                    Standard (without source)
// {$DEFINE XLR_STD}
//                                    Developer (with source)
{$DEFINE XLR_DEV}
//                                    Professional
// {$DEFINE XLR_PRO}

//                                    ASProtect
// XL Report.AX
{$IFDEF XLR_AX}
  {$IFNDEF XLR_DEV}
    {$DEFINE ASPROTECT}
  {$ENDIF}
{$ENDIF}
// XL Report.NET
{$IFDEF XLR_NET}
  {$IFNDEF XLR_DEV}
  //  {$DEFINE ASPROTECT}
  {$ENDIF}
{$ENDIF}
// XL Report.MSP
{$IFDEF XLR_MSP}
  {$IFNDEF XLR_DEV}
    {$DEFINE ASPROTECT}
  {$ENDIF}
{$ENDIF}

{ Compiler directives }

Желающие скачать данные архив для закачки могут взять здесь. Я не знаю как поведет себя пакет, без предварительной установки XL report-а (я усанавливал официальный пакет от AfalinaSoft для зарегистрированной версии Delphi 6).

Последовательность установки пакета следующая:
Запускаем Delphi XE3.
Установка XL Report для Delphi XE3
Далее Component --> InstallComponent
Установка XL Report для Delphi XE3
Unit выбираем откуда, куда распаковывал закачанный архив. Затем клавиша Next
Установка XL Report для Delphi XE3
Не забудьте нажать кноку Finish
После успешной устанки пакета открывайте проект (или создайте новый) и перед вами будет знакомая картина предыдущих версий:
Установка XL Report для Delphi XE3