We no longer support older versions of Delphi with the latest release. We will tell you why.
Even though we have been using Delphi since 1995, it is evolving and has undeniable advantages in the work of programmers. FastReport products for Delphi do not stand still as well, and we try to offer developers new and more modern features with each release. Important update: FastReport VCL no longer supports Delphi versions below 2010. We'll explain why.
You may be wondering: why update Delphi, and what are the advantages of newer versions? The main ones are many new features that boost productivity in high-end application development. In this article, we will try to talk about the main changes in Delphi since version 7 and answer questions about the end of support for Delphi's old versions.
1. What versions are no longer supported in the FastReport VCL product?
- Borland Delphi 7
- Borland Delphi 8
Borland Delphi 2005
Borland Delphi 2006
CodeGear Delphi 2007
Guaranteed support for FastReport VCL 2023.2 is available only starting with Delphi 2010.
2. Why are we deprecating older versions of Delphi below 2010, and what is the deterrent to development for this deprecation?
An important stage in the VCL development of report generators was the end of support for obsolete non-Unicode versions. It will help us work more intensively on improvements in FastReport and introduce more modern features with each release. Since the release of 2023.1 FastReport VCL supports Delphi versions starting with 2010.
Several factors influenced this decision:
- Lack of native Unicode support in older versions, which imposes various restrictions on localization and working with strings and text;
- The need to support a lot of functions that become unnecessary when using new Delphi versions;
- There are no Generics and anonymous methods, which impose additional costs for human resources to support functions that could be implemented easier on standard IDE modules;
- It is not possible to use new VCL components, the independent implementation of which increases the development time. Their performance management also requires resources;
3. What is the advantage of moving to Delphi versions above 2010, and what technologies will we be able to use?
Namespaces for multiple modules, the for... in...do loop, the inline directive for functions, and other code optimizations
In Delphi, the compiler allows procedures and functions to have an inline directive, which improves performance. When a procedure or function meets certain conditions, the compiler inserts code at the exact point of invocation instead of generating a regular call. The inlining method can optimize performance and generate code that runs faster but at the cost of increasing code size. In this case, the binary generated by the compiler will be larger. The inline directives, like other directives, are used to declare and define functions and procedures.
Fast code refactoring
Code refactoring is restructuring and modifying existing code without changing its functionality. Refactoring can speed up, simplify, and improve the performance and readability of application code.
The refactoring service in Delphi analyzes and performs code redistribution operations. The service also displays changes in preview mode and the refactoring panel at the bottom of the code editor. Refactoring candidates appear as tree nodes that you can open to view additional items to be refactored. Warnings and errors are also displayed on this panel. You can access the refactoring service through the context and main menu.
New versions of Delphi include the open-source DUnit testing framework for creating and running automated tests. This framework facilitates test creation for application classes and methods. When used with refactoring, this feature can improve the stability of your application.
Thanks to the timely launch of tests with changes in the project source code, you can find and fix errors in the early development stages.
End-to-end support for Unicode at the language, library, and development environment levels
Unicode is a standard that allows you to get a computer representation and work with any writing system.
- The Unicode Standard: Version 5.0. 5. ed. Addison-Wesley Professional, 2006. 1472p
A large number of character sets in different languages, such as Asian variants, can be represented using Unicode. The most common encodings are UTF (Unicode Transform Format) and UCS (Universal Character Set). See for more information on Unicode: http://en.wikipedia.org/wiki/Unicode.
One of the important changes in new versions of Delphi is that string types are now based on UNICODE. Data types such as AnsiString and WideString based on the ANSI standard and beyond are still workable given the size of strings in bytes.
List of changes for Unicode support:
- String now means UnicodeString, not AnsiString
- Char now means WideChar (2 bytes, not 1), which is a UTF-16 character
- PChar means PWideChar
- AnsiString stands for the "old" String type
- AnsiChar, PAnsiChar
- Short string contains AnsiChar elements
- The implicit conversion continues to work
The active code page controls the mode (ANSI or Unicode), and ANSI strings are still supported.
Operations that do not depend on character size:
- String concatenation
- Standard functions for working with strings. For example, Length, Copy, Pos, etc.
- Operators. For example , <string> <comparison> <string>, CompareStr(), CompareText(), etc.
- FillChar(<struct or memory>)
- Windows API
Many companies distribute their applications and/or exchange information with countries where Unicode support is critical.
"Generic" is a term for a generic type. It refers to using the language syntax for predefining data types in certain container types, such as arrays or collections. Generics allow you to write generic code that works with a specific data type, i.e., with a class or class method. You can also specify the type during runtime.
Support for Generics has been introduced since Delphi 2009.
Delphi RTL includes out-of-the-box implementations of collections (defined in the "Generics.Collections" module):
An anonymous method is a procedure or function that does not have a name associated with it. Anonymous methods are parts of code that can be associated with variables or used as parameters for other methods. In addition, anonymous methods can use variables in the context in which they are defined. Declaring and using anonymous methods does not require complex syntax. The syntax is similar to closures in other programming languages.
New VCL components (Custom Hints, Ribbon Controls, etc.)
Direct2D API—program interface designed to interact with GDI, GDI+, and Direct3D. Direct2D redirects all drawing operations to the GPU (Graphic Processing Unit) instead of the CPU. It gives more resources to the application. Starting from Microsoft Windows 7, the ability to use Direct2D was added: API for hardware-accelerated 2D graphics output, allowing for improved performance when displaying 2D objects, bitmaps, and text.
New versions of Delphi have Direct2D support at the IDE level.
IDE Insight, Source Code Formatter, Search taskbar
A new IDE Insight service has been added that allows you to enter a name and select project options and developer preferences from a list of suitable options. IDE Insight input fields include options for commands, files, components, and projects, among many categories.
The Delphi environment offers code formatting according to templates by default.
Also, IDEs now offer a fully customizable code formatting service activated by enabling CTRL+D. It ensures that the modules are formatted according to the predefined settings. Moreover, you can format all the modules included in the project using the project manager.
In Delphi 2010, compilation can be done in the background. Thus, you can run the compilation process in a separate or parallel thread and continue working in the IDE while the project is being compiled. For example, during compilation, you can edit files and set or change breakpoints.
Run-time type identification (RTTI) provides information about objects, allowing them to interact within the application. The Delphi IDE is another good RTTI use case when using the object inspector, code editor, and modeling tools.
Other programming languages have evolved to change the way we program, and Java and .NET applications demonstrate these innovations perfectly because modern programming languages offer new levels of dynamic interaction. Delphi 2010, thanks to Delphi's broad RTTI support for Win32, now has all the power of .NET and Java. The new RTTI system (RTTI.pas) is fully object-oriented and allows you to create and implement more dynamic interactions between objects.
In new versions of Delphi, you can overload certain functions or "operators" in records. The names of the operand functions correspond to the symbolic representation in the source code.
A "helper" is a type of class that introduces additional methods and properties by associating them with another class. These methods and properties can be used in the context of an associated (or derived) class. Class helpers are a way to extend a class without inheriting it. The "helper" class introduces additional scope only when the compiler finally determines the identifier name.
Strict Private and Strict Protected
Newer versions of Delphi have two options that control the visibility of class attributes: strict private and strict protected.
Strict private: class attributes are visible only within the class in which they are declared. These attributes are invisible from methods declared in the same module or from those not being part of the class.
Strict protected: Specifies that class attributes are accessible to descendants.
Breakpoints in threads, "freeze/unfreeze" threads
New memory manager and new RTL features
Some RTL features have been improved to increase performance. The new FASTMM memory manager for Win32 applications allows Delphi 2006 applications to perform better and detect memory leaks by declaring ReportMemoryLikeonShudown := True anywhere in your code. Starting with Delphi 2006, in addition to detecting memory leaks, the speed of applications has also improved significantly.
Classes for object-oriented I/O in files and directories
Starting with Delphi 2010, a new IOUtils module has been added that includes three static classes: TDirectory, TPath, and TFile. In turn, these classes expose several static methods useful for I/O tasks. Most methods are feature and signature compatible with the .NET System.IO.Directory, System.IO.Path, and System.IO.File classes.
4. What should users do if they want FastReport VCL with Delphi 7-2009 (will it be possible to download FastReport VCL up to the 2023.2 version. Where and how to download it if available)?
You can get the latest version of FastReport VCL with the Delphi 7-2009 support upon technical support request.
5. What is the technical support for FastReport VCL with Delphi 7-2009 (will it be unavailable, or will it be paid, will there be a transitional period)?
As we no longer guarantee functionality in IDE versions below Delphi 2010, we discontinue technical support for issues related to these versions.
Critical bugs resulting in the total failure of FastReport VCL with Delphi 7-2009 support can be fixed upon request at the developer's discretion.
Rejection of outdated versions of Delphi 7-Delphi 2009 will allow us to redistribute the resources of the development team for more efficient development, reduce the time to implement new functions and devote more time to finding faults in FastReport VCL, which in turn will lead to more stable work of the software product. Our goal is to create a powerful and fast report generator for all developers, and we are sure this step will make our product even better.