FastReport прекращает поддержку старой версии Delphi

05.04.2023

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

FastReport прекращает поддержку старой версии Delphi

Несмотря на то, что мы пользуемся Delphi ещё с 1995 года, он развивается и имеет неоспоримые преимущества в работе программистов. Так же и продукты FastReport для Delphi не стоят на месте и с каждым релизом мы стараемся привнести новые и более современные возможности для разработчиков. Важное обновление: FastReport VCL больше не поддерживает версии Delphi ранее 2010. И мы объясним почему.

Вы можете задаться вопросом: зачем обновлять Delphi и какие преимущества у более современных версий? Главные из них - большое число новых возможностей, обеспечивающих большой рост производительности при создании высококлассных приложений. В этой статье мы попробуем показать, какие важнейшие изменения получил Delphi, начиная с 7 версии и ответим на возникающие в связи с прекращением поддержки старых версий Delphi вопросы.

1. Какие версии больше не поддерживаются в продукте FastReport VCL?

  • Borland Delphi 7
  • Borland Delphi 8
  • Borland Delphi 2005
  • Borland Delphi 2006
  • CodeGear Delphi 2007
  • Delphi 2009

Гарантированная поддержка работоспособности FastReport VCL 2023.2 осуществляется только, начиная с версии Delphi 2010

FastReport прекращает поддержку старой версии Delphi

2. Почему мы отказываемся от старых версий Delphi до Delphi 2010, и что является сдерживающим фактором в разработке для отказа?

Важным этапом развития VCL направления генераторов отчетов стало прекращение поддержки устаревших неюникодных версий. Это поможет нам более интенсивно работать над улучшениями в FastReport и внедрять более современные возможности с каждым релизом. С релиза 2023.1 FastReport VCL поддерживает версии Delphi, начиная с 2010.

Существует несколько факторов, которые повлияли на такое решение:

  • Отсутствие в старых версиях нативной поддержки Unicode, что накладывает различные ограничения при локализации и работе со строками и текстом;
  • Необходимость осуществлять поддержку очень многих функций, потребность в которых отпадает при использовании новых версий Delphi;
  • Нет Generics и анонимных методов, что накладывает дополнительные расходы человеческих ресурсов для обеспечения поддержки функций, которые могли быть проще реализованы на стандартных модулях IDE;
  • Нет возможности использовать новые компоненты VCL, самостоятельная реализация которых увеличивает время разработки, а также поддержка их работоспособности тоже требует ресурсов;

3. В чем преимущество перехода на версии Delphi выше 2010, и какие технологии это позволит потенциально использовать нам?

Пространства имен для нескольких модулей, цикл for ... in ... do, директива inline для функций и другие возможности оптимизаций кода

В Delphi компилятор позволяет процедурам и функциям иметь директиву inline, присутствие которой повышает производительность. Когда процедура или функция соответствует определенным условиям, компилятор вставляет код именно в точку вызова вместо того, чтобы генерировать обычный вызов. Метод “подстановки в строку” (inlining) может оптимизировать производительность и генерировать код, который будет исполняться быстрее, но ценой увеличения его размера. В этом случае двоичный файл, сгенерированный компилятором, будет больше. Директивы inline, как и другие директивы, используются для объявления и определения функций и процедур.

Возможности быстрого рефакторинга кода (Refactoring code)

Рефакторинг кода — это техника перераспределения и модификации существующего кода с сохранением функциональности. Рефакторинг может ускорить, упростить и улучшить быстродействие и читабельность кода приложения.

Сервис рефакторинга в Delphi анализирует и выполняет операции по перераспределения кода. Сервис также отображает изменения в режиме предварительного просмотра и в панели рефакторинга в нижней части редактора кода. Кандидаты на рефакторинг отображаются в виде узлов дерева, которые можно открыть для просмотра дополнительных элементов, подлежащих рефакторингу. Предупреждения и ошибки также отображаются на этой панели. Доступ к сервису рефакторинга можно получить как через контекстное меню, так и через главное меню.

Модульное тестирование (UNIT TESTING)

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

Благодаря своевременному запуску серии тестов при изменениях в исходного кода проекта можно находить и исправлять ошибки на ранних этапах разработки.

Сквозная поддержка Unicode на уровне языка, библиотеки и среды разработки

Unicode представляет собой стандарт, позволяющий получить компьютерное представление и работать с любой системой записи.

- The Unicode Standard: Version 5.0. 5. ed. Addison-Wesley Professional, 2006. 1472 p

Большое количество наборов символов в разных языках, например, азиатских вариантах, представимы при помощи Unicode. Наиболее часто употребимые кодировки – UTF (Unicode Transform Format) и UCS (Universal Character Set). Более подробная информация по Unicode, можно посмотреть по адресу: http://en.wikipedia.org/wiki/Unicode.

Одним из важных изменений в новых версиях Delphi является то, что теперь строковые типы основаны на UNICODE. Такие типы данных как AnsiString и WideString на основе стандарта ANSI и далее являются работоспособными, как и ранее с учетом размера строк в байтах.

Список изменений для поддержки Unicode:

  • String теперь означает UnicodeString, а не AnsiString.
  • Char теперь означает WideChar (2 байта, а не 1), представляющий собой символ UTF-16.
  • PChar означает PWideChar.
  • AnsiString означает “старый” тип String.

Нет изменений:

  • AnsiString.
  • WideString.
  • AnsiChar, PAnsiChar.
  • Short string содержит элементы AnsiChar.
  • Неявное преобразование продолжает работать.

Активная кодовая страница управляет режимом (ANSI или Unicode), так что строки ANSI по-прежнему поддерживаются.

Операции, которые не зависят размера символа:

  • Конкатенация строк.
  • Стандартные функции для работы со строками. Например, Length, Copy, Pos и т.д.
  • Операторы. Например, <string> <comparison> <string>, CompareStr(), CompareText(), etc.
  • FillChar (<struct or memory>).
  • Windows API.

Многие компании распространяют свои приложения и/или обмениваются информацией со странами, где поддержка Unicode является критической.

Generics

"Generic" - термин, обозначающий общий тип. Он относится к использованию синтаксиса языка для предварительного определения типов данных в определенных типах контейнеров, таких как массивы или коллекции. Дженерики позволяют писать общий код, который работает с определенным типом данных, т.е. с классом или методом класса. Также можно указать тип во время выполнения программы.
Поддержка Generics была введена, начиная с Delphi 2009.

Delphi RTL включает готовые реализации коллекций (определенных в модуле “Generics.Collections”):

  • TList
  • TQueue
  • TStack
  • TDictionary
  • TObjectList
  • TObjectQueue
  • TObjectDictionary
  • TThreadedQueue

Анонимные методы

Анонимный метод — это процедура или функция, не имеющая связанного с ней имени. Анонимные методы — это части кода, которые могут быть связаны с переменными или использоваться в качестве параметров для других методов. Помимо того, анонимные методы могут использовать переменные в том контексте, в котором они определены. Объявление и использование анонимных методов не требует сложного синтаксиса. Синтаксис похож на конструкции замыканий (closures) в других языках программирования.

Новые компоненты VCL (Custom Hints, Ribbon Controls и т.д.)

Поддержка Direct-2D

Direct2D API - программный интерфейс предназначен для взаимодействия с GDI, GDI+ и Direct3D. Direct2D перенаправляет все операции рисования в GPU (Graphic Processing Unit) вместо CPU, а это дает больше ресурсов приложению. Начиная с Microsoft Windows 7 добавили возможность использовать Direct2D: API для 2D графического вывода с аппаратным ускорением, что позволяет обеспечить повышенную производительность при отображении двухмерных объектов, растровых изображений и текста.

В новых версиях Delphi поддержка Direct2D добавлена на уровне IDE.

IDE Insight, Source Code Formatter (сервис форматирования исходного кода), Search task bar

Добавленный новый сервис IDE Insight позволяет ввести имя и выбрать параметры проекта и предпочтения разработчика из списка подходящих вариантов. Поля ввода IDE Insight включают в себя параметры команд, файлов, компонентов и проектов, среди многих категорий.

Среда Delphi предоставляет возможность форматирования кода по шаблонам по умолчанию. Также IDE теперь предлагают полностью настраиваемую службу форматирования кода, которая активируется нажатием клавиш CTRL+D. Это гарантирует, что модули будут отформатированы в соответствии с заранее заданными настройками. Кроме того, можно отформатировать все модули, входящие в проект, используя менеджер проектов.

Фоновая компиляция (BACKGROUND COMPILATION)

В Delphi 2010 компиляция может выполняться в фоновом режиме. Таким образом, можно запустить процесс компиляции в отдельном или параллельном потоке и продолжать работу в IDE во время компиляции проекта.

Например, во время компиляции можно редактировать определенные файлы, устанавливать или изменять точки останова.

Расширенная RTTI

Динамическая идентификация типа данных (англ. run-time type information, run-time type identification, RTTI) предоставляет информацию об объектах, позволяя им взаимодействовать внутри приложения. IDE Delphi при использовании инспектора объектов, редактора кода и инструментов моделирования, является еще одним хорошим примером использования RTTI.

В других языках программирования при их эволюции и развитии изменилось то, как мы программируем, и приложения, созданные на Java и .NET, хорошо иллюстрируют эти инновации, поскольку современные языки программирования предлагают новые уровни динамического взаимодействия. Delphi 2010, благодаря широкой поддержке RTTI в Delphi для Win32, теперь обладает всей мощью .NET и Java. Новая система RTTI (RTTI.pas) является полностью объектно-ориентированной и позволяет создавать и реализовывать взаимодействия между объектами более динамичным способом.

Перегрузка операторов

В новых версиях Delphi существует возможность перегружать некоторые функции или "операторы" в объявлениях записей (records). Имена функций-операндов соответствуют символьному представлению в исходном коде.

“Помощники” классов (Class Helpers)

“Помощник” — это тип класса, который вводит дополнительные методы и свойства, связывая их с другим классом. Данные методы и свойства могут использоваться в контексте ассоциированного (или производного) класса. “Помощники” классов — это способ расширения класса без его наследования. “Помощник” класс вводит дополнительную область видимости только тогда, когда компилятор окончательно определяет имя идентификатора.

Strict Private и Strict Protected

В новых версиях Delphi есть две опции, которые определяют видимость атрибутов класса: strict private и strict protected.

Strict private: атрибуты класса являются видимыми только внутри класса, в котором они декларированы. Эти атрибуты не видны из методов, декларированных в том же модуле, или тех, которые не являются частью класса.
Strict protected: определяет, что атрибуты класса доступны в потомках.

Точки останова в потоках, «заморозка/разморозка» потоков

Новый менеджер памяти и новые функции RTL

Были улучшены некоторые функции RTL для повышения производительности. Новый менеджер памяти FASTMM для Win32-приложений позволяет приложениям Delphi 2006 работать лучше и обнаруживать утечки памяти, просто объявив ReportMemoryLikeonShudown := True в любой части программного кода. Начиная с Delphi 2006, помимо возможности обнаруживать утечки памяти, скорость работы приложений также значительно улучшилась.

Классы для объектно-ориентированного ввода/вывода в файлы и директории

Начиная с Delphi 2010 добавили новый модуль IOUtils, включающий три статических класса: TDirectory, TPath и TFile. В свою очередь данные классы раскрывают ряд статических методов, полезных для задач ввода-вывода. Большинство методов совместимы по функциям и подписи с классами .NET System.IO.Directory, System.IO.Path и System.IO.File.

4. Что делать тем кто хочет FastReport VCL с поддержкой Delphi 7-2009 (будет ли возможность скачать FastReport VCL до версии 2023.2, где и как скачать если будет)?

По запросу в техническую поддержку вы можете получить последнюю версию FastReport VCL, которая была с поддержкой Delphi 7-2009.

5. Как будет осуществляться техническая поддержка для FastReport VCL с поддержкой Delphi 7-2009 (ее не будет или будет платной, будет ли переходной период)?

Так как теперь мы не гарантируем работоспособность в версиях IDE до Delphi 2010, техническая поддержка по данным вопросам, связанным этими версиями, будет прекращена.

Критические баги, которые приводят к полной неработоспособности FastReport VCL с поддержкой Delphi 7-2009, по запросу могут быть исправлены по усмотрению разработчика.

Отказ от устаревших версий Delphi 7 - Delphi 2009 позволит нам перераспределить ресурсы команды разработчиков для более эффективной разработки, и уменьшить время реализации новой функциональности, а также уделить больше времени найденным неисправностям в FastReport VCL, что в свою очередь приведет к более стабильной работе программного продукта. Наша цель - создать мощный и быстрый генератор отчетов для всех разработчиков, и мы уверены, что это шаг поможет нам сделать наш продукт еще лучше.

Delphi FastReport VCL
10 июля 2026

Как настроить Content Security Policy для отчетов FastReport .NET WEB

Узнайте, как настроить Content Security Policy для отчётов FastReport .NET WEB: обзор директив и значений CSP, изменения в архитектуре FastReport, типичные сценарии обхода и способы защиты.
22 июня 2026

Как настроить отчет с Business Objects из кода и дизайнера в FastReport .NET

В этой статье рассматривается реальный пример создания и использования шаблона отчета .frx для подключения к иерархическим бизнес-объектам в FastReport .NET.
21 апреля 2026

Использование водяных знаков в FastReport VCL

В статье подробно рассмотрели функционал добавления водяных знаков в FastReport VCL — как через визуальный интерфейс, так и программно, с помощью кода на Delphi и в скриптах отчётов.

Не является публичной офертой
© 1998-2026 ООО «Быстрые отчеты»