Download - RAD Studio “Olympus” Beta
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
RAD Studio “Olympus” Beta Build 6121, July 19th, 2021
New Features Documentation
1 What’s new in this Beta 6
1.1 Known Issues In This Beta Build 7
2 Beta Installation and General Information 7
2.1 Supported Target Platforms 8
2.2 Third Party Beta components 8
2.3 How to log Beta bugs 9
2.4 Delphi LSP bugs 9
2.5 Exception stack trace reporting in the IDE 10
3 What’s New in RAD Studio “Olympus” 11
4 IDE Changes 12
4.1 High DPI IDE 12
4.1.1 High DPI for the VCL Form Designer 14
4.1.1.1 Scaling 16
4.1.1.2 FAQ and Notes: 17
4.1.1.3 Questions for beta testers 17
4.1.1.4 Other notes 19
4.1.2 High DPI for the FMX Form Designer 19
4.1.3 Reporting High DPI Issues 20
4.1.4 New Icons 20
4.2 Open Tools API Changes 21
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
4.3 VCL Styles in the Designer 21
4.4 Form Designing and Code Editing 22
4.5 Options Dialog Performance 23
4.6 FireMonkey Design Guidelines and Margins 23
4.7 DelphiLSP for Visual Studio Code 24
4.7.1 Using DelphiLSP with a Delphi project in VSCode 25
4.7.1.1 Filing Bug Reports 28
4.7.2 Using DelphiLSP with Other Editors 28
4.7.2.1 Initialization 28
4.7.2.2 Configuration 31
4.8 Code Insight (DelphiLSP) Improvements 32
4.8.1 Classic Code Completion Removed 32
4.8.2 DelphiLSP 32
4.9 Warning for Build Events 33
4.10 Custom Port for Win64 Debugger 34
4.11 General IDE Changes 35
5 Delphi Compiler Improvements and New Platforms 37
5.1 New macOS ARM 64-bit Target Platform 37
5.2 Binary Literals and Digit Separator 40
5.3 Inline assembler support for AVX instructions (AVX-512) 40
6 C++ ToolChain Improvements 42
6.1 New C++ Code Formatter 42
6.1.1 Manually 42
6.1.2 Format On Newline 43
6.1.3 Formatting Style 43
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
6.1.3.1 Preventing formatting 43
6.2 C++ / Delphi Compatibility 44
6.2.1 C++-compatible RTTI for Delphi types 44
6.2.2 Using smart pointers with Delphi classes 44
6.2.3 Other 45
6.2.4 Type conversions 45
Type conversions to and from strings 45
Assign a C++ string to a Delphi string 46
Assign a Delphi string to a C++ string, or get a string_view of a Delphi string 46
6.3 Exception handling 47
Other 47
7 VCL and FireMonkey Changes 47
7.1 TRichEdit Component updated to RichEdit 4.1 (MSFTEDIT.dll) 47
7.1.1 RichEdit URL detection 48
7.1.2 RichEdit Text Attributes Changes 48
7.1.3 RichEdit EM_FORMATRANGE 50
7.2 VCL Modernization Work 51
7.2.1 New Default Font 51
7.2.2 Memo and RichEdit Margins 51
7.2.3 Radiogroup without frame 52
7.2.4 DropDownWidth for TComboBox 52
7.2.5 TTreeView support for CheckBoxes 53
7.2.6 TWICImage multi frame support 55
7.2.7 New TLabelDBEdit component 55
7.2.8 Error Messages improvements 56
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
7.2.9 Coolbar Chevron support 56
7.2.10 NumberBox 57
7.2.11 Threading safety improvement 57
7.2.12 VCL StyleUtils.inc converted to a regular unit 57
7.2.13 Smaller Changes 58
7.3 FireMonkey 59
7.3.1 Better FMX Windows and desktop integration 59
7.3.2 FireMonkey Windows High-DPI improvements 60
7.3.3 Google Play Billing Library Version 3 60
7.3.4 Android 30 API support 61
7.3.5 Additional Improvements 61
8 RTL and Data 61
8.1 Platform Identifiers 61
8.2 RTL: TZipFile 61
8.3 RTL large data structures improvements 62
8.4 Record Helper for TDateTime 62
8.5 Record Helper for TCurrency 64
8.6 Bluetooth and BLE Improvements 64
8.7 Additional RTL Enhancements 64
8.7.1 Generic Collections Improvements 64
8.7.2 RTTI 65
8.7.3 PPL 65
8.7.4 Streams 65
8.7.5 Dates to String Conversion 65
8.7.6 Create a Interface Instance 66
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
8.7.7 TNoRefCountObject 66
8.7.8 Optimizations and Other 66
8.7.9 JSON 67
8.7.10 UTF8ToString Changes 67
8.8 FireDAC 68
8.9 Internet, HTTP and REST Client Libraries 69
8.10 Internet Server Technologies 70
9 Installer Changes 70
10 List of Publicly Reported Bugs Fixed 73
10.1 List of Bugs Fixed in previous Beta 77
10.2 List of Bugs Fixed in previous Beta 81
10.3 List of Bugs Fixed in previous Beta 86
10.4 List of Bugs Fixed in previous Beta 92
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
1 What’s new in this Beta
In this beta build
(6121) ● Only minor improvements and quality fixes
In previous beta
builds
● Language selection in the minimal installed
● Support for Google Play Billing Library Version 3
● High DPI IDE
○ and High DPI in the VCL Designer
● C++:
○ C++-compatible RTTI for Delphi types
○ Using C++ smart pointers with Delphi types
○ New C++ Code Formatter
● VCL TRichEdit Component updated to RichEdit 4.1
● DelphiLSP:
○ DelphiLSP for Visual Studio Code
○ Delphi Classic Code Insight Removed
● Delphi macOS ARM 64-bit support
● Initial work for FMX Designer guidelines (partial)
● Delphi LSP improvements
● New IDE icons
● Preliminary implementation of VCL styles at design time
● Delphi language Binary Literals and Digit Separator support
● A large number of RTL, VCL, FMX, Data and Internet libraries
improvements
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
1.1 Known Issues In This Beta Build
● The Welcome Page does not support High DPI. The Welcome Page will be replaced
with a new VCL-based implementation in a future beta build.
● New IDE icons are not final. Some have errors in the dark theme, and some others
will be redesigned or replaced.
● The popular Spring4D library doesn’t currently compile (see the bug report)
2 Beta Installation and General Information The “Olympus” Beta can coexist with any previous version installation (like 10.4.x or 10.3.x)
on the same machine or VM, but we recommend installing Beta versions on a separate
machine or VM rather than on your primary development machine.
Hardware and operating system requirements for installing and running “Olympus” are
the same as 10.4 Sydney, listed here.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
2.1 Supported Target Platforms
RAD Studio “Olympus” is expected to support the following target platforms:
OS Supported Versions Target Platform
Supported
Languages
Supported UI
Frameworks
Delphi C+
+ FireMonkey VCL
Windows
Windows 10, Windows 7
(SP1+), Windows Server 2019
and 2016
Windows 32-bit ✔ ✔ ✔ ✔
Windows 64-bit ✔ ✔ ✔ ✔
macOS 11 Big Sur, 10.15 Catalina
macOS Intel 64-bit ✔ ✔
macOS ARM 64-bit ✔ ✔
iOS iOS14 iOS Device 64-bit ✔ ✔ ✔
Android 11, 10, 9, 8.1
Android 32-bit ✔ ✔ ✔
Android 64-bit ✔ ✔
Linux
Ubuntu 20.04 LTS and 18.04
LTS, RedHat Enterprise Linux
v8, WSL2 (Windows
Subsystem for Linux)
Linux Intel 64-bit ✔ ✔1
2.2 Third Party Beta components
Third party components for previous versions of RAD Studio are generally not compatible
with the “Olympus” Beta. You can use the Quality Portal RSB issue for sharing binaries or
download links with other beta testers.
1 Via FMX Linux, now available from Embarcadero as part of RAD Studio.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
2.3 How to log Beta bugs
To log bugs found in the Beta, login to Embarcadero’s Quality Portal using your
Embarcadero Developer Network (EDN) credentials.
Attention: Use your username to log in to EDN. Email address is not supported.
If you are having trouble logging in, please contact [email protected].
Same if RAD Studio Beta is not in the Project dropdown list.
Click Create issue on the top bar and select RAD Studio Beta from the Project list:
Before logging a bug, please verify that the bug does not already exist in the system.
Duplicate bug reports waste time for both the person logging the bug and the evaluator,
who has to reproduce it to determine if it is similar to other bugs.
For any additional information on how to log bugs on Quality Portal, please review the
RAD Studio Quality Portal user guide.
2.4 Delphi LSP bugs
If you find bugs in code completion or other Code Insight features, please include LSP log
files. You can find full info about turning on logs for DelphiLSP here.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
Note that log files include source code when a unit is modified in the IDE. Logs also grow
fast, so please turn it on only for the time it takes to reproduce the issue (i.e. turn logging
on, start the IDE, reproduce the issue, close the IDE, turn logging off.)
2.5 Exception stack trace reporting in the IDE
The IDE exception dialog no longer attempts to automatically send crash reports to our
bug reporting system. Instead, it allows you to save the crash diagnostic to a file and
provides links to our reporting system. When an exception occurs, you will see the
following exception dialog:
Click Save to collect information on the error and save it to a file. You will see a progress
bar showing the information collection status.
Then, the Save Report dialog opens and allows you
to review and edit the information that was
gathered, and save it to a file.
Click Save Report to save the crash report. Follow
the steps in “How to log Beta bugs” above,
describing the steps that led to the error, and then
attach the crash report file that you previously
saved.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
3 What’s New in RAD Studio “Olympus”
All new features provided in the “Olympus” Beta are not committed until completed and
GA released. The remaining sections of the document describe features available in the
current beta version and the issues that have been addressed so far, but there is no
guarantee that any or each of these features and fixes will be part of the final shipping
product (GA release).
As the product beta itself shows in terms of product name, we are currently planning to
release the new version of RAD Studio as version 11.0, to match Microsoft’s version
number change in the next version of Windows. For more information about the version
number change please refer to this blog post.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
4 IDE Changes
4.1 High DPI IDE
The Delphi, C++Builder and RAD Studio IDE is now high-DPI enabled. By default, the
IDE runs as DPI-unaware, as in previous versions. Running with high DPI enabled is
currently a runtime option.
To run the IDE with high DPI support, run bds.exe on the command line or through a
shortcut with the following flag:
>bds /highdpi:permonitorv2
Warning: In a future beta, and the final release, we plan to make high DPI enabled by default so that this command-line parameter will be unnecessary. Your feedback if this is the right decision is much appreciated.
Note: to force the IDE to run DPI-unaware, use:
>bds /highdpi:unaware
(or in the current beta, don’t use a command-line parameter at all.)
All windows in the IDE should now support high DPI. This includes behavior such as
changing scale when being dragged from one monitor to another. IDE functionality
includes:
● The IDE main window
● All dockable windows: Object Inspector, Projects, Structure, Messages, Breakpoint,
Watch, Local Variable, Data Explorer, and so forth
○ All Object Inspector property editors
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
● All dialogs: New Items, IDE Options and Project Options (and all pages in those
dialogs), Compile, About, and so forth
● All content windows: the editor, form designers (more on these below), History,
type library editor, and so forth.
Note: The code editor currently still uses Courier New 10pt as its default font. We’re
considering setting the default to Consolas 10pt, and shipping other common coding
fonts with the IDE. Your feedback on what fonts will be appreciated. The editor does
not support ligatures in this version.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
Attention: The HTML-based Welcome Page does not support high DPI. It will be
replaced with a VCL-based implementation in a future beta.
The FMX and VCL form designer support for high DPI is noted below. Please read it. The
VCL designer support is complex and we seek beta feedback.
The IDE styles (Light, Dark and Mountain Mist) have been updated to support high DPI.
IDE images, including toolbar icons, the screenshots in the First Start dialog, and
elsewhere have been increased in resolution.
The IDE internally uses a TImageCollection and multiple TVirtualImageList components, the
same components we recommend for customer applications. All ToolsAPI APIs that refer
to images have been updated to pass multiple resolutions of an image (details in the
ToolsAPI section below.)
Note: Some icons are beta quality (see note below) or not yet replaced, and in some
areas, we have chosen not to update the icons or images to high-res in this version.
That decision has been made only for rarely used areas of the IDE. If there is an area
without high-res icons which you believe we should address, please file a bug report.
Even without updated icons, all areas of the IDE should still scale correctly.
4.1.1 High DPI for the VCL Form Designer
The most complex part of high DPI in the IDE is the form designer. By and large the rest
of the IDE is the same as any other VCL app (with some exceptions) but the VCL designer
is unique. There are significant technical challenges to having a window, such as a
designed form, at a different DPI than the IDE it is hosted in. However, there are downsides
to always scaling a form, such as having different values streamed to DFM due to the
monitor it was opened and designed on, as well as loss of positioning precision if a form
is repeatedly rescaled. We’ve done considerable research and prototyping to ensure we
have a solution that addresses the multiple different needs that different development
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
teams may have. We strongly seek your feedback on this solution and the best default
behavior for the IDE.
In RAD Studio 11.0, the VCL form designer can handle scaling three different ways.
High DPI settings in IDE Options > VCL Form Designer
Note: When changing the ‘VCL Designer High DPI mode’ setting, you need to close
and reopen the designer for it to have effect. (We expect to change this in a future
beta.)
First, the VCL designer can simply not scale the form at all (‘Low DPI (96 PPI)’). This leaves
the designer running at 96PPI, the same pixel size as if the IDE were running DPI unaware.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
If the IDE itself is running high DPI then the designed form will appear smaller than you’d
expect, because its pixel-size - its scaling - is 100% no matter the scaling of the IDE around
it.
Note: ‘Low DPI’ is the default in this beta. You need to change this setting in order
to test the VCL designer’s high DPI support. We expect to change the default in a
future beta.
4.1.1.1 Scaling
The other options both scale the form using the VCL’s perMonitorv2 scaling support, the
same way a form is scaled at runtime, the support for which is now extended to
designtime.
1. The easiest of the two options is to scale the designer with the monitor it is on
(‘Automatic’). If the IDE is running at 200%, so is the designer: specifically, the form
designer will scale the form to the same PPI as the display that the designer is
placed on.
2. The other option is to lock a form to be designed at a specific PPI (‘User Editable’).
For example, you can specify a form is always designed at 192PPI: this means that
no matter the scaling of the screen your form designer is on, the designer will
display and design that form at 200%. (If the monitor and this setting have different
PPIs, the displayed form will appear relatively smaller or larger than other controls
in the IDE.) The scale to use is a per-form setting and is currently controlled via the
PixelsPerInch property in the Object Inspector.
These two settings scale the form at designtime just as it is scaled at runtime. This means
that the pixel values of control size and location change in the DFM based on the
PPI at which the form was designed. That is, when a form that was last designed at
96PPI (or unknown PPI, as for forms from previous version) is designed and saved at
another PPI, Left, Height, Padding, etc. will all be saved in the DFM with a different value.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
At runtime, the form is scaled from whatever its design PPI was to the display PPI. This
uses the same system as before v11.0, except that in prior versions the design PPI was
always assumed to be 96PPI.
Note: Frames are not scaled in this beta. They will only be scaled if they are placed
on a form. We plan to address this in a future beta.
4.1.1.2 FAQ and Notes:
● TForm.Scaled must be set to True for scaling to take effect in the designer.
● If multiple team members design a form, the PPI at which they design it can be
different each time the form is designed (based on their personal computer
configuration.) This means that the form will rescale when it is opened for design,
and saved and checked into source control with different pixel values. This may
also mean loss of precision - controls’ position or size changing - if a form is
repeatedly scaled up and down.
○ To mitigate this, we’ve added the ‘User Editable’ option: a team can use this
option and set the PixelsPerInch property to ensure a form is always
designed and saved at a specific PPI.
● The designtime PPI is stored in the PixelsPerInch property. If your IDE’s VCL design
scaling is set to User Editable, this is a writable property. Enter a PPI value to scale
the form to that PPI in the designer. If the IDE’s VCL design scaling is set to ‘Low
DPI’ or ‘Automatic’, this property is IDE-managed and is read-only.
○ PixelsPerInch is an existing property. Its meaning is now overloaded. In the
past, before 10.3 (where it stopped having meaning) it had meaning at
runtime only, for a short time (it was used to initialize the CurrentPPI
property for a control.)
4.1.1.3 Questions for beta testers
Please test the following areas and consider the following questions.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
We have spent considerable time researching this before implementing, as well as testing,
but this is an important and complex area. We suggest testing the following areas:
● A form originally designed on Windows 7’s ‘Large Fonts’ scaling (120PPI.) You may
well have trouble designing such a form already because until v11 the form
designer assumed 96PPI; what is the situation with this new behaviour? What if you
edit the DFM to set PixelsPerInch to 120? For your forms, is it already set to 120?
● A form designed in Delphi up to 10.2, where the PixelsPerInch property is set. Please
also look at old versions - Delphi 7, for example.
● What happens if you move the designer between two monitors of different scales
often? The VCL uses integer coordinates and so at runtime it is possible to lose
positioning correctly - the same will happen at designtime. How should we handle
this?
● Forms designed before v11.0. Do they display and design correctly with each of
the designer settings?
● Forms designed at each of the three settings. Do they display and design correctly
if you change the designer setting and reopen the form?
● If you have multiple team members with machines with different scaling, please
test using the Automatic setting and then each editing the same form. Does this
work well or does it cause problems for you, either in control positioning or in
source control changes?
● If you design at high DPI, e.g. 200% or 250%, does your app behave and scale
correctly when you run it at 100%?
There are some smaller areas that are not around the fundamental design but around UX
or workflow which we’d also like feedback on:
● Which of the three designer scaling settings (Low DPI, User Editable, and
Automatic) is the best default in the final release? Automatic is the easiest and
makes the designer look ‘right’ when you first open it -- but given it can be a
different scale per developer, would that cause too many problems for teams or
source control?
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
● Locking a form to a specific PPI is currently done on a per-form basis. Should this
be an IDE-level setting? (Or project-level, but a form may be in multiple projects;
we often avoid project-level settings for this reason and so we’d likely go IDE-level
for this setting.)
● Should we change the User Editable behavior so that instead of editing a property
in the Object Inspector, the designer scaling and form PPI are set elsewhere? (E.g.,
the FMX designer has a toolbar: some equivalent for the VCL designer, or controls
near the form placement control in the bottom right.)
4.1.1.4 Other notes
The ‘Scale grid size / snap tolerance to design PPI’ setting affects the behavior of the visual
grid on a form. (By default, this draws a dot every 8x8 pixels, though this is configurable.)
When this checkbox is checked, the value (e.g. 8x8) is scaled the same as the form.
Note: Do you find this setting useful? If scaling, should the grid and snap always
scale with the form scale?
The form positioner (in the bottom right of the form designer) supports high DPI.
4.1.2 High DPI for the FMX Form Designer
The FireMonkey designer scales a form the same way a FMX form does at runtime.
Coordinates remain the same (that is, a button placed at (20, 20) will be at (20, 20) no
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
matter the high DPI scaling of the monitor the FMX designer is on.) It is a visual scaling
only.
4.1.3 Reporting High DPI Issues
When filing bugs about high DPI issues, please include the following information:
● Windows version or build
● Both your scaling and resolution settings
○ Is it a multi-monitor system? Please include the specific scaling and
resolution for each monitor
○ Depending on the issue, a screenshot of the display arrangement may be
important as well:
● What graphics card is it?
● Are you running on a virtual machine, and if so which one (e.g. VMWare Fusion,
Parallels, etc.)?
● Are you running over a remote desktop?
● Are there any other Windows settings that might affect the issue?
4.1.4 New Icons
All new set of IDE icons (with multiple resolutions.) The IDE uses the virtual image list
throughout. Note that some of these icons will be further replaced in a future beta, and
that some icons have glitches (e.g. white backgrounds) in the dark style.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
4.2 Open Tools API Changes
All APIs that pass images, such as the splash screen services, about box, IDE Insight, and
other areas have been updated to support high DPI images. Each interface has a new
overload of relevant methods that take a TGraphicArray (defined as an array of TGraphic.)
This allows you to pass in multiple resolutions of the same icon, which are added to the
internal image collection and used with a virtual image list.
For example, IOTASplashScreenServices280 is the new splash screen interface for v11 and
adds overloads for AddPluginBitmap and AddProductBitmap, where instead of passing a
single HBITMAP you pass an array of images:
procedure AddPluginBitmap(const Caption: string;
AImageArray: TGraphicArray; AIsUnRegistered: Boolean;
const ALicenseStatus, ASKUName: string); overload;
Although the methods take an array of any TGraphic, we recommend PNG images.
Component vendors should update packages to use these new interfaces, so that logos
and icons will draw crisply at high DPI. In addition, the enum type TOTACompileMode was
incomplete (did not have all values it should have had) and has been fixed.
4.3 VCL Styles in the Designer
VCL controls can be optionally rendered using styles in the designer.
Warning: This feature is not enabled by default in the current beta and can be turned on in the Tools Options dialog, User Interface > Form designer section. The option name is “Enable VCL Styles”.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
The StyleName property editor reflects the available styles in the project, and renders a
preview (how a button looks). Remember that if you select “Windows” it means platform
styling and if you leave the property empty, it is going to use the parent control (or parent
form) style.
Rather than using the classic Windows frame, the VCL form designer now has a custom
Windows 10-style title bar and frame. This uses a Windows 10 style if no form style is set,
or the frame reflects the selected style of the form if the form is set to use a VCL style, as
you can see in the image above.
4.4 Form Designing and Code Editing
In 10.4.2, we introduced having the form designer and the code editor open in two edit
windows. There were some bugs which have been resolved. In addition, we have made
some behavior changes. Previously, the Design tab was disabled when a form was being
designed in another window. Now, the tab is always enabled, but if it is being designed
in another window a message is displayed; you can click a button to bring the designer
to the current window.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
4.5 Options Dialog Performance
The Options dialogs (both IDE and Project Options) should load in a fraction of the time
of previous releases.
This is implemented by lazy-loading the options panes. In the past, all pages were loaded
when the dialog opened; now, a page is loaded (and controls created) only when it needs
to be shown. All pages should be independent, but beta testing would be appreciated to
ensure there are no unexpected interactions that this causes an issue with.
Third party vendors should be aware of this change for impact on their settings frames.
4.6 FireMonkey Design Guidelines and Margins
The FireMonkey designer in Olympus is introducing guidelines and other features found
in the VCL designer, with a different implementation. Here are some of the new features:
1. Components hints are displayed for components and when you are moving or
resizing them.
2. Controls offer guidelines for alignment on the sides (there is no plan to have a base
text alignment, due to the complexity of text positioning for styled controls):
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
3. Controls display standard margins distance with a line across and distance
indication when this matches margin or padding distance:
4. The form and component resize controls (grab handles when a control is selected,
and the form or frame design edge to resize) have been changed to use the same
look and feel as the VCL form designer.
4.7 DelphiLSP for Visual Studio Code
In RAD Studio 11 DelphiLSP can be used with other editors. As part of this, we have
created a Visual Studio Code extension using DelphiLSP.
When we release Delphi 11 this extension will be placed on the Visual Studio Marketplace.
For beta testing, it is available as a separate download at:
altd.embarcadero.com/releases/studio/Beta/Olympus/delphilsp-vscode-1.0.0.zip
To install, locate the delphilsp-v1.0.0.vsix file, then follow these Stack Overflow instructions.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
Visual Studio Code using the DelphiLSP extension, here providing code completion. Other
features, such as navigation, hover, and so forth are also available.
4.7.1 Using DelphiLSP with a Delphi project in VSCode
DelphiLSP needs to understand your Delphi project within a VSCode workspace. It does
so by reading a JSON file containing key project settings. To generate this JSON file, turn
on ‘Generate LSP Config’ in the Delphi Code Insight settings, and then open a project. The
file will be created alongside the .dproj, with the same filename but a ‘delphilsp.json’
extension (eg, the config file for myproject.dproj will be myproject.delphilsp.json.)
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
Check this checkbox to generate the DelphiLSP JSON config files
when a project is opened.
In Visual Studio Code, a workspace is a different concept to a project. When you open a
workspace - say, open a folder which contains Delphi source - and open either a .pas or
.dpr file, DelphiLSP will look for a project config file. (The extension is activated only when
you open a Delphi source file, not when you open the folder or workspace.)
Notification shown when a project configuration file is found and loaded.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
If no config files are found, or if multiple are found, you will see a small prompt to choose
one. Clicking this will take you to the plugin settings, which you can also open manually.
Ensure you set the settings file path on the Workspace tab:
DelphiLSP settings in VSCode. The Workspace > Settings File setting must point at the
.delphilsp.json configuration for your project.
The path to the Delphi LSP executable (see the User settings, not Workspace) should be
automatically set, but if it is not then point it at the bin\delphilsp.exe file in your installation.
For more information on User vs Workspace settings, please see this VSCode
documentation. Workspace settings override User settings, which is why the path the
delphilsp.exe should be set in the User settings, but your current project configuration
should be set in the Workspace settings.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
Once configured, you should be able to use LSP features with your Delphi code in Visual
Studio Code.
4.7.1.1 Filing Bug Reports
To debug issues and file bug reports:
● Turn on logging: in the DelphiLSP settings, set Log Modes to 255 (a bitmask for all
info). Logs are not written to file, but shown in VSCode. Thereafter, follow the same
steps to file a DelphiLSP bug report as you would from within Delphi. Make sure
you attach the .delphilsp.json file you are using.
● To see more of the communication within VSCode itself, you can also open the
Output view:
○ Open the command palette <F1> and type "Focus Output View"
○ Select DelphiLSP in the drop-down menu
○ You should see log messages sent from the server to the client in real time
4.7.2 Using DelphiLSP with Other Editors
Only the VSCode extension is supported. However, the following documentation may be
useful if you want to test DelphiLSP with other editors.
DelphiLSP only communicates over standard (console) I/O.
4.7.2.1 Initialization
LSP allows custom initializationOptions within the initialize request. This is an example of a
valid initialization request:
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
{
"jsonrpc": "2.0",
"id" : 1,
"method": "initialize",
"params": {
"processId": 4711,
"rootUri": "file:///test/VSCode/Playgrounds",
"initializationOptions": {
"serverType": "controller",
"agentCount": 2,
"returnDccFlags": true,
"returnHoverModel": true,
"storeProjectSettings": false
}
}
}
The fields are as follows:
serverType
Defines the operation mode of DelphiLSP:
● "controller": The server will spawn agentCount DelphiLSP sub-processes
(agents) that work with the controller in order to answer requests. The
controller acts as a proxy between the IDE and the agents. When an agent
terminates or stops responding to requests, the controller will replace it with
a new fresh agent. Requests can be processed by multiple agents in parallel.
(Note: We only support, and have only tested, configurations with up to two
agent processes. One is used for Error Insight, and the other to handle all
other LSP requests, such as code completion. This is one agent and one
linter.)
● "agent": The server runs in single process mode. The server can only handle
one request at a time. It is not possible to get error insight (diagnostics) in
this mode.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
● "linter": The server runs in single process mode. The server can not process
any language feature requests such as code completion. It is dedicated to
error insight. Errors, warnings and hints will be provided through the
textDocument/publishDiagnostics notification
The default value is "agent". Use “controller” paired with an agentCount of 2 to get
the same behavior as the Delphi IDE and the default behavior of the VSCode
extension.
agentCount
Defines the number of sub-processes to be spawned when serverType =
"controller".
● agentCount <= 0: agentCount will be set to 1
● agentCount = 1: One sub process with serverType = "agent" will be
spawned
● agentCount > 1: [agentCount - 1] sub-processes with serverType = "agent"
will be spawned. One sub process with serverType = "linter" will be spawned.
The default value is 2.
returnDccFlags
If true then code completion items will carry some additional information from the
compiler. The IDE uses this data to display types of code completion that are not
defined in the LSP specification, such as procedure or type.
The default value is false.
returnHoverModel
If true then textDocument/hover will return a JSON object instead of text/Markdown.
The default value is false.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
storeProjectSettings
If true then the settings sent through workspace/didChangeConfiguration will be
generated and saved to %currentDelphiProject%.delphilsp.json. When DelphiLSP is
used with a third-party editor then it can use this file to get project settings. See
the configuration.settingsFile property.
This flag will only be evaluated when used by RAD Studio, and is how Delphi causes
the .delphilsp.json file to be created.
The default value is false.
enableFileWatcher
If true then DelphiLSP watches directories for changes in order to detect file
modifications. If changes are detected, it refreshes based on the new contents of
the file. This only has an effect for files that are not open in the editor: for files that
are open in the editor, the editor is responsible for ensuring the LSP server has the
current file contents.
The default value is true.
4.7.2.2 Configuration
LSP allows custom settings within the workspace/didChangeConfiguration notification. This
is an example of a valid notification:
{
"jsonrpc": "2.0",
"method": "workspace/didChangeConfiguration",
"params": {
"settings": {
"settingsFile": "file:///C%3A/Test/SampleProject.delphilsp.json"
}
}
}
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
settingsFile
URI of a .delphilsp.json settings file that has previously been created with
storeProjectSettings enabled; that is, when the Delphi IDE ‘Generate LSP Config’
setting is checked in the Code Insight options.
The ability to load settings from a configuration file is only active when DelphiLSP
is used by third party editors. When used from Delphi, the IDE communicates
directly.
4.8 Code Insight (DelphiLSP) Improvements
4.8.1 Classic Code Completion Removed
Delphi classic code completion has been removed from the IDE. Only the LSP option is
available for Delphi Code Insight.
4.8.2 DelphiLSP
We are aiming at improving Delphi LSP quality and adding some extensions to the
features available in 10.4.2.
● DelphiLSP can locate include files. Failing to handle files included in Delphi units
was the main known cause of projects that did work with classic code completion
not working with DelphiLSP. We still do not support code completion inside a .inc
file, but using a .inc file in a .pas file is now understood by DelphiLSP.
● DelphiLSP agent processes will terminate themselves when there is an AV in the
compiler DLL. The controller process will create a new replacement agent. This
means that if the server encounters an error, instead of staying unstable or not
producing results, it will restart.
● Ctrl+Shift+Up/Down works when the method signatures are slightly different (such
as when you have edited the parameters for a method, and want to go to the
declaration in order to edit it to match)
● Code completion handles forwarded procedures
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
● Code completion now suggests arrays, when array items are compatible for
assignment
● Fixed an issue where a didChangeNotification was not set to the server when a file
was removed from a project
● Fixed an issue where ctrl-click navigation did not work when only DCP files were
referenced
● Delphi code completion should now display reserved words and templates again
(if enabled in the Options)
● Code Completion can complete on Tab key
● Error insight now working for include statements with relative paths
● Improvements to when a server is restarted, if the server crashes or stops
responding
● Ctrl+Click now works when only a DCP is referenced
● An issue with the completion results for dereferenced pointers is resolved
● Completion works for identifiers starting with “Is”, and after “is”
● Better completion for type helpers, including the name shown in UI
● Issues around forward-declared methods resolved
● An issue where changes in a unit were not visible when completing is resolved
● Find Declaration works with type helpers with overloaded methods
4.9 Warning for Build Events
Build events can execute arbitrary commands on your system. It is common to get
projects, which include build events, from third parties online.
RAD Studio now warns when a project contains a build event in any configuration
(including one you are not currently building.)
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
Prompt notifying you this project contains build events.
Click Yes to continue building; No to stop.
Check ‘Always trust this project’ to trust this project in the future as well, and you will
never be prompted when you build this project again.
Trusted projects are stored by path in the registry, so if you move the project the IDE will
prompt again. Projects are not stored by version, hash, or other data, so it is possible to
mark a project as trusted, get a newer modified version (e.g. by pulling from remote
source control), and not be warned even if a project has a build event it did not before.
Therefore, this is a security mitigation intended to assist you, but must not be taken as
fully preventative in all situations.
Note: Feedback on this feature is much appreciated. It is intended to improve
security when using projects from potentially untrusted or potentially compromised
sources.
Feedback on this feature is much appreciated. It is intended to improve security when
using projects from potentially untrusted or potentially compromised sources.
4.10 Custom Port for Win64 Debugger
The IDE and the Win64 debugger communicate via a socket, if that’s in use you’ll see an
error as you start debugging.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
In particular when WSL2 is installed (that is, Windows Subsystem for Linux), the Win64
debugger can fail saying ‘unable to create process’, or with a message that a port is in
use.
To resolve this and similar issues, you can now define the DBK_DEBUG_PORT <port-
number> environment variable to override the default port number.
4.11 General IDE Changes
Most IDE work has been focused on high DPI, as covered above. Additional IDE
improvements include:
In build 6121:
● The DesignIDEResources package is now available
● The default editor font is now Consolas, with a fallback of Fira Code. The First Use
dialog also has an editor font setting on the first page. Note that the editor does
not support ligatures, so advanced settings of fonts like Fira Code are not available.
(Ligature or other advanced rendering support is not planned in this release.)
● The SVN UI packages are now marked runtime. These were originally designtime,
so that they could be extended.
● The Code Insight progress bar is hidden once work is completed
● An issue where the IDE consumed very high numbers of GDI handles was resolved
● A bug where the scrollbar for the code completion window could remain onscreen
has been resolved
● An issue where the action list editor would not open if images were not assigned
to the component has been resolved
● A large number of high DPI issues have been resolved, in areas including the Object
Inspector and property editors; dataset field list, assign dataset dialog, edit dataset
dialog; data bindings; the breakpoint list; the virtual image list and image collection
editors; and the Add Reference dialog.
In previous builds:
● Fixed a performance issue with the View Units dialog
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
● Fixed some localization issues
● Some crashes when running the IDE unthemed have been resolved
● VCL styles in the form designer are supported for non-visual components
● Mouse wheel scrolling is supported in Object Inspector dropdown lists
● Some stability issues around startup (caused by background loading of component
images) have been resolved
● The "cursor position" status bar panel can be clicked to show the "go to line
number" dialog
● The image collection editor now supports Ctrl+C to copy the selected image to the
clipboard
● A bug where the mouse area that would close a tab did not fully correspond to the
area the close button was drawn (it was offset by a pixel) has been resolved.
● ‘FireMonkey Metropolis Application’ is no longer listed in the New Items dialog.
● Fixed an issue where the IDE might look for the (old, and removed) Documentation
page.
● An issue where the IDE flickered immediately after startup is now resolved, as is
flicker when choosing ‘View Source’.
● An issue where opening the Load Process dialog twice in a row would cause a crash
is resolved.
● Some German localization text truncation issues have been fixed, especially in the
virtual image list editor.
● The Guided Tour package has been removed.
● The fonts in the navigation toolbar at the top of the code editor have been resized
to follow the IDE font sizes.
● ‘View Messages’ has been restored to the code editor context menu
● The Library Path dialog now works well when resizing.
● Issues where some dialogs had the wrong control focused have now been resolved.
● Some more instances of TListView, which cannot be fully styled, have been replaced
with the virtual treeview.
● The Select Platform, Build Tools, Go To Line Number, Open From Version Control,
Select Remote Profile, Attach To Process, various list editor dialogs, Watch Editor,
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
Evaluate, Breakpoint, Creation Order, Directory Select, Use Unit, Use Form, various
wizards, Search and Search Progress dialogs now use the IDE-styled title bar.
● Fixed a number of styling issues, AVs, and miscellaneous bugs.
5 Delphi Compiler Improvements and New
Platforms In general terms, we are not expecting major Delphi language improvements in this cycle,
given the focus on supporting a new platform (macOS 64 ARM) and compiler
performance, also for the LSP backend.
5.1 New macOS ARM 64-bit Target Platform
Olympus supports a new Delphi target platform, macOS ARM 64-bit, to natively target
the new M1 Apple Silicon CPUs with macOS 11. You can use this platform to build native
M1 applications (of course this requires M1 hardware to run). We’ll keep our Intel 64-bit
target support and the creation of Universal Binary applications including both ARM and
Intel binaries in a single package.
At this time you should be able to create all types of supported applications: console
applications, basic FireMonkey applications, FMX applications using database features,
and leverage the universal version of embedded InterBase, IBLite.
Universal binaries
You can create a universal binary containing both Intel and ARM code. To do so, ensure
the target platform is macOS ARM 64-bit. In the Project Options (ensuring macOS ARM
64-bit is the current target) navigate to Building > Delphi Compiler > Compiling > Other,
and check ‘Generate macOS universal binary file (x86_64 + arm64)’.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
M1 Debugging Requirements
Attention: A different debugger is used for M1 ARM debugging than Intel debugging.
This debugger’s evaluator does not support Delphi syntax. Evaluation, such as in the
Evaluate/Modify dialog, Watches, and so forth need to be in C++ syntax. This means
use of double-quotes for strings, and writing expressions as case-sensitive.
iOS/64 target can't debug with source code.
PAServer works on M1 Mac hardware. PAServer uses LLDB which requires Python 3.9.
Python is not installed with PAServer, and needs to be installed manually on the target
machine. The upcoming macOS Monterey will include Python, so we believe this manual
step will only be required on Big Sur.
We recommend installing Python via HomeBrew. If you haven't installed HomeBrew yet,
open Terminal and type
/bin/bash -c "$(curl -fsSL
https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
After installing HomeBrew, add it to the path:
export PATH="$PATH:/opt/homebrew/bin"
Now you can install [email protected]:
brew install [email protected]
For more information, see https://brew.sh/.
MacOS Deprecations
● In the Olympus release, Macapi.QTKit unit is deprecated on macOS/X64, and it’s
removed from macOS/Arm64 library, given Apple removed QTKit from
macOS/Arm64.
● We removed the "Macapi.Quicktime" unit from the product for both the
macOS/X64 and the Arm64 libraries.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
Predefined Compiler Symbols for Apple Platforms
The following symbols are major differences among three compilers. Other predefined
symbols are covered here.
Symbol
Compilers
dccosx64 dccosxarm64 dcciosarm64
CPU64BITS ✔ ✔ ✔
CPUARM ✔ ✔
CPUARM64 ✔ ✔
CPUX64 ✔
OSX ✔ ✔
OSX64 ✔ ✔
IOS ✔
IOS64 ✔
POSIX ✔ ✔ ✔
POSIX64 ✔ ✔ ✔
PIC ✔ ✔ ✔
EXTERNALLINKER ✔ ✔ ✔
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
Historically, MACOS means “it is Darwin platform”: all of Apple operating systems are
Darwin variants. so all macOS and iOS targeted Delphi compilers define MACOS (even if
this sounds a bit confusing today, given that the current name of the operating system
originally known as OS X is macOS -- our compiler level symbols will keep reflecting the
original name).
5.2 Binary Literals and Digit Separator
The Delphi language in Olympus adds support for binary literals, in addition to decimal
and hexadecimal ones. A binary literal uses the % symbol as a prefix (the same syntax
used by other Pascal compilers):
const Four = %100; var x: Integer; begin x := %1001001;
The language also introduces a digit separator that can be used to improve the readability
of literal values with many digits. The separator is the underscore “_” and it is basically
ignored when parsing and compiling the code. This is very similar to the feature
introduced in C# 7.0.
const
AMillion = 1_000_000;
Of course, you can use the digit separators for binary literals.
5.3 Inline assembler support for AVX instructions (AVX-512)
We have introduced support for asm code for newer sets of instructions, including AVX2
(ymm) and AVX512 (zmm).
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
Attention: You’d need an AVX-512 compatible CPU (like one of the recent INTEL
CPUs) to test this feature. You can find more information at:
https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#CPUs_with_AVX-512
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
6 C++ ToolChain Improvements
6.1 New C++ Code Formatter
The code formatter technology used for C++ has been completely replaced. Code
formatting now uses clang-format.
The new formatter options are not found in IDE Options > Language > Formatter; that
section now contains only Delphi formatting. To configure C++ formatting, go to
Language > C++ > Formatting.
You can always format code manually, but you can also have the IDE automatically format
your code when you save, or even as you type. These last two are controlled by the ‘Auto
formatting’ setting. Set it to format on save, or format on newline.
6.1.1 Manually
To format code, press Ctrl+D. You will be prompted for confirmation. You can format
either the whole file, or a selection.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
6.1.2 Format On Newline
A powerful feature in other editors is the ability to format code as you type. In C++Builder
11, the code editor can optionally format your C++ code each time you press Enter to
add a new line.
Clang-format is not fast. The settings offer a max line limit for your code, after which auto-
formatting will not occur. By default this is set to one thousand (1000) lines.
6.1.3 Formatting Style
Clang-format comes with several predefined formatting styles. Select which one you want
to use.
In a future beta, we will have an Embarcadero style that formats following Embarcadero
conventions.
The previous formatter had formatting settings inside the IDE Options, but for clang-
format you can edit the configuration file or create a new one. Formatting settings are
found in the *.clang-format files. The current configurations are inbuilt, but you can create
a new configuration file in the \bin or your versioned RAD Studio AppData user folder
(recommended), e.g.
C:\Users\YOU\AppData\Roaming\Embarcadero\BDS\22.0\
Information on how to write a clang-format file can be found here. You can base a file on
a pre-existing configuration, including an inbuilt configuration, so making a format config
that changes only one or two things is fast.
Files will be found by the IDE when next started and displayed as an option in the
‘Formatting style’ combo box. Edits to a config file will be applied every time formatting
is invoked without needing to restart the IDE.
6.1.3.1 Preventing formatting
Surround code you do not want formatted with comments as follows:
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
// clang-format off
Code here will not be formatted
// clang-format on
A comment can be in single-line format (//) or multi-line (/* */). Turning it off via a
comment pauses formatting until an ‘on’ comment is found. These comments themselves
will be formatted.
6.2 C++ / Delphi Compatibility
This release has seen a focus on smoothing the integration between Delphi and C++. We
now have C++-compatible RTTI available for Delphi types; you can use make_shared on a
Delphi type, and there are type conversions to assist in using Delphi types in C++.
6.2.1 C++-compatible RTTI for Delphi types
In the past, C++ type information was not available for Delphi types; that is, accessing the
result of typeid(delphi-type) where delphi-type is a type that comes from Pascal code, or is
a Delphi-style class in C++, would result in an AV. Note that typeid returns a std::typeinfo
for a type simply, or if it’s a polymorphic type for the most-derived type of that instance.
typeid() now returns a std::typeinfo, and C++-compatible RTTI is generated for Delphi types.
6.2.2 Using smart pointers with Delphi classes
You can now use both std::make_unique and std::make_shared on a Delphi-style class (one
defined in Delphi, or in C++ but inherited from one defined in Delphi.) This avoids having
to write code like:
auto a = std::shared_ptr<TObject>(new TObject());
where ‘new’ is bad C++ style, and you would normally want to use the make_shared
method.
You can now write,
auto a = make_shared<TObject>();
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
6.2.3 Other
The Clang compiler now emits a warning when an interface does not derive from
IUnknown.
6.2.4 Type conversions
The RTL now includes helper methods for type conversions between Delphi types and
C++ (and Delphi) strings. This includes conversions from TDateTime to string types, as
well as being able to easily convert (assign) from a C++ string to a Delphi string, and use
std::string_view on a Delphi string.
We’re very interested in your feedback on these changes.
Type conversions to and from strings
The classic compiler performed some conversions from some Delphi types to string
implicitly. This was incorrect by the C++ standard, and we have not mimicked that
incorrect behavior in the Clang computer -- but it is very useful to be able to convert
easily and so we have added methods to convert types in a C++ish way, following the
example set by std::to_string.
There are now to_string() and from_string() methods for many types to convert to and
from strings (UnicodeString, WideString and AnsiString, including templated by codepage),
which you can use as follows, here for a Currency value:
String str;
Currency curr;
TFormatSettings fs;
to_string(str, curr, fs);
from_string(curr, str, fs);
These methods exist for the following types:
● Currency
● TDateTime
● 32 and 64-bit signed and unsigned integer types
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
● Floating point types (as Extended)
● Variants
Assign a C++ string to a Delphi string
Direct C++ string to Delphi string assignment works through the string_view constructor:
String str;
std::string std_str("Hello World!");
str = std_str;
std::wstring std_wstr(L"abcdefghijklmnopqrstuvwxyz");
str = std_wstr;
std::u16string std_u16str(u"große Straße");
str = std_u16str;
std::u32string std_u32str(U"sehr kleine Straße");
str = std_u32str;
Or constructing an AnsiString:
AnsiString str;
std::u16string std_str(u"Hello World!");
str = std_str;
std::u32string std_str(U"Hello World!");
str = std_str;
std::wstring std_str(L"abcdefghijklmnopqrstuvwxyz");
str = std_str;
This means you no longer need to assign from the various string types by constructing
using c_str().
Assign a Delphi string to a C++ string, or get a string_view of a Delphi string
You should also be able to assign a C++ string from a Delphi string the same way, since
you can get a string_view for a Delphi string:
ShortString str("Hello World!");
std::string_view view(str);
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
AnsiString str("Hello World!");
std::basic_string_view<char> view(str);
UnicodeString str(L"СЛАДКОЕ");
std::basic_string_view<System::WideChar> view(str);
6.3 Exception handling
A large number of exception handling issues have been resolved. Please refer to the fix
list at the end of this document.
Other
● You can now attach to a process using the C++ Win64 debugger
● An issue where batch compilation for a project ignored .c files has been resolved
7 VCL and FireMonkey Changes In Olympus we have done (and are still doing) a large collection of small improvements
to the VCL library, focused on removing some remaining XP legacy and inconsistencies
with Windows 10 and improving core library features.
7.1 TRichEdit Component updated to RichEdit 4.1
(MSFTEDIT.dll)
In this release we updated the implementation of the VCL TRichEdit component to
support a more recent version of the platform control. By doing so we have made a
available directly in the VCL component many new platform features, including:
● Transparent richedit controls: When the new property Transparent is set to True
the richedit becomes transparent -- its background is replaced by whatever is
beneath it. When it is set to False, it behaves as normal, with its background filled
with Color.
● URL detection, tooltips and link clicking (see below for more information)
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
● Spell checking: There is a new property SpellChecking; when set to True the richedit
automatically offers native spell checking abilities (on Windows 8 or later)
● Subscript and superscript text attributes
● Background color
● Scroll position tracking (new property ScrollPosition: TPoint)
● Changing margins
● Other missing attributes (see below)
● EM_FormatRange support (see below)
Additionally, TDBRichEdit.Lines is now a public property
7.1.1 RichEdit URL detection
RichEdit URL detection is made available with the following new features:
● EnableURLs turns on automatic URL detection in the richedit control. It recognises
URLs with known protocols (e..g http://google.com) or that start with www. (e.g.
www.google.com).
● ShowURLHint, when set to True, causes tooltips to be automatically displayed
when the mouse is over a URL.
● SetSelTextToFriendlyURL replaces the selected text (starting at position SelStart
and running for SelLength characters) with a friendly hyperlink - any text you like
(Text) that is a hyperlink to a specified URL (URL)
● When a URL in the richedit is clicked with the left or right mouse button the
OnLinkClick event fires, passing the URL and an indication of which button was
pressed.
7.1.2 RichEdit Text Attributes Changes
TTextAttributes now has additional properties, and some properties have slightly different
definitions (only in terms of their property indices so will not affect usage). Here are the
full set of properties:
property BackColor: TColor read GetBackColor write SetBackColor;
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
property Bold: Boolean index CFE_BOLD read GetStyleElement write
SetStyleElement;
property Charset: TFontCharset read GetCharset write SetCharset;
property Color: TColor read GetColor write SetColor;
property ConsistentAttributes: TConsistentAttributes read
GetConsistentAttributes;
property Disabled: Boolean index CFE_DISABLED read GetStyleElement write
SetStyleElement;
property Height: Integer read GetHeight write SetHeight;
property Hidden: Boolean index CFE_HIDDEN read GetStyleElement write
SetStyleElement;
property Italic: Boolean index CFE_ITALIC read GetStyleElement write
SetStyleElement;
property Link: Boolean index CFE_LINK read GetStyleElement write
SetStyleElement;
property Name: TFontName read GetName write SetName;
property Offset: Integer read GetOffset write SetOffset;
property Pitch: TFontPitch read GetPitch write SetPitch;
property Protected: Boolean index CFE_PROTECTED read GetStyleElement write
SetStyleElement;
property RevAuthor: Byte read GetRevAuthor write SetRevAuthor;
property Size: Integer read GetSize write SetSize;
property Strikeout: Boolean index CFE_STRIKEOUT read GetStyleElement write
SetStyleElement;
property Style: TFontStyles read GetStyle write SetStyle;
property Subscript: TSubscriptType read GetSubscript write SetSubscript;
property Underline: Boolean index CFE_UNDERLINE read GetStyleElement write
SetStyleElement;
The new ones are BackColor, Disabled, Hidden, Link, Offset, RevAuthor and Subscript.
TConsistentAttribute in Vcl.ComCtrls.pas now has a new member: caCharSet. This relates
to the TTextAttributes.CharSet property.
There are also new types used by TParaAttributes: cpaAlignment, cpaNumbering,
cpaFirstIndent, cpaLeftIndent, cpaRightIndent, cpaTabStops.
TParaAttributes has a new property, ConsistentAttributes
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
This operates similarly to TTextAttributes.ConsistentAttributes in that it returns consistent
paragraph attributes from the current selection. The values are described as follows:
● cpaAlignment: Alignment is consistent in the selection
● cpaNumbering: Numbering is consistent in the selection
● cpaFirstIndent: FirstIndent is consistent in the selection
● cpaLeftIndent: LeftIndent is consistent in the selection
● cpaRightIndent: RightIndent is consistent in the selection
● cpaTabStops: Tab settings are consistent in the selection
Additionally, Vcl.ComCtrls.TTextAttributes now has 4 extra Boolean properties to
complement Vcl.ComCtrls.TTextAttributes.Style, which allow the individual style attributes
of bold, italic, strikeout and underline to be read or written independently:
● property Bold: Boolean
● property Italic: Boolean
● property Strikeout: Boolean
● property Underline: Boolean
7.1.3 RichEdit EM_FORMATRANGE
TCustomRichEdit now has a new public method:
function RenderRange(RenderTarget: TCanvas; FormatTarget: TCanvas = nil; RangeStart:
Integer = 0; RangeEnd: Integer = -1; MeasureOnly: Boolean = False): Integer;
This provides an alternative to the general purpose Print method allowing custom ranges
of the rich edit content to be rendered to any specified TCanvas. The parameters are as
follows:
● RenderTarget: a canvas representing the device to render to, if RenderRange is
being used to send output to a device, so Printer.Canvas is typically used here, but
might be something else if building a print preview window.
● FormatTarget: a canvas representing the target device to format for, so typically
Printer.Canvas. If this parameter is nil (the default value) then it defaults to the same
as RenderTarget.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
● RangeStart: the character position index immediately preceding the first character
in the range to be rendered by this call. The default value of 0 indicated the
beginning of the richedit control's content.
● RangeEnd: the character position immediately following the last character in the
range to be rendered by this call. The default value of -1 indicates the last character
in the richedit control's content.
● MeasureOnly: if False (the default) then the text is rendered, if True the text is just
measured.
7.2 VCL Modernization Work
7.2.1 New Default Font
For VCL applications, the default font is now Segoe UI 9. The title font of the VCL styles is
getting adapted to the same default font.
7.2.2 Memo and RichEdit Margins
New property in TCustomMemo, published in TMemo, TDBMemo, TRichEdit, TDBRichEdit:
property EditMargins: TEditMargins read FEditMargins write SetEditMargins;
where TEditMargins is a type whose public interface is:
TEditMargins = class(TPersistent)
public
procedure Assign(Source: TPersistent); override;
property OnChange: TNotifyEvent read FOnChange write FOnChange;
published
property Left: TMarginSize read FLeft write SetLeftMargin default 0;
property Right: TMarginSize read FRight write SetRightMargin default 0;
property Auto: Boolean read FAuto write SetAutoMargin default False;
end;
EditMargins.Left and EditMargins.Right allow you to set a specific left and/or right margin
on a multiline edit control. EditMargins.Auto sets EditMargins.Left and EditMargins.Right
to 0 and allows the control to set its own narrow margins based on its font.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
However it should be noted that richedit controls do not respond effectively to
EditMargins.Auto, simply setting their left margin to 0. It is currently unclear why this
happens.
7.2.3 Radiogroup without frame
In TCustomGroupBox we have this public property published in TGroupBox:
● ShowFrame controls whether the groupbox frame is drawn or not
● HeaderFont is the font used to render the group caption, as drawn in the top of
the group frame. By default it is the same as Font and any changes to Font are
reflected by the same changes happening to HeaderFont
● DefaultHeaderFont defines the relationship between HeaderFont and Font. When
HeaderFont is edited, DefaultHeaderFont becomes False and further changes to
Font are not made to HeaderFont. Setting HeaderFont to True makes HeaderFont
revert to mirroring Font
7.2.4 DropDownWidth for TComboBox
There are two new properties in TCustomComboBox and descendants (public in the
TCustomComboBox class, published in the TComboBox class):
property AutoDropDownWidth: Boolean
read FAutoDropDownWidth write FAutoDropDownWidth default False;
property DropDownWidth: Integer
read GetDropDownWidth write SetDropDownWidth stored IsDropDownWidthStored;
● DropDownWidth allows you to customize the minimum width of the combobox's
dropdown list. If anything less than the combobox width, then you will see no
difference. Larger sizes allow the list to be wider than the combobox for wider
strings. If the wider list might spill off the edge of the screen then the list is shifted
so that the right list edge is below the combobox right edge and the extra width
extends out to the left past the left edge of the combobox.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
● AutoDropDownWidth when set to True causes the dropdown list width to be
automatically set to as wide as the widest string in the combobox items.
7.2.5 TTreeView support for CheckBoxes
TTreeNode defines these new properties:
property Checked: Boolean read GetChecked write SetChecked;
property CheckState: TNodeCheckState read GetCheckState write SetCheckState;
where TNodeCheckState is:
TNodeCheckState = (ncsNone, ncsUnchecked, ncsChecked, ncsPartial,
ncsDimmed, ncsExclusion);
Assuming checkboxes are enabled (see TCustomTreeView.CheckBoxes) the check state of
a given node can be queried or set with CheckState. Checked is a shortcut property to
either find if the check state is ncsChecked or not, or to set the check state to either
ncsChecked or ncsUnchecked.
Note that if you try to set a check state that is not appropriate based on the current
value of TCustomTreeView.CheckStyles, or is invalid thanks to
TCustomTreeView.CheckableItems being False then an exception is raised.
TCustomTreeView defines these protected members:
procedure DoCheckStateChanged(Node: TTreeNode; CheckState: TNodeCheckState);
virtual;
function DoCheckStateChanging(Node: TTreeNode; NewCheckState,
OldCheckState: TNodeCheckState): Boolean; virtual;
property CheckableItems: Boolean
read FCheckableItems write SetCheckableItems default False;
property CheckStyles: TCheckStyles
read FCheckStyles write SetCheckStyles default [];
property OnCheckStateChanged: TTVCheckStateChangedEvent
read FOnCheckStateChanged write FOnCheckStateChanged;
property OnCheckStateChanging: TTVCheckStateChangingEvent
read FOnCheckStateChanging write FOnCheckStateChanging;
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
These of the above are published by TTreeView:
property CheckableItems;
property CheckStyles;
property OnCheckStateChanged;
property OnCheckStateChanging;
The above relies on these types:
TCheckStyle = (csPartial, csDimmed, csExclusion);
TCheckStyles = set of TCheckStyle;
TTVCheckStateChangedEvent = procedure(Sender: TCustomTreeView;
Node: TTreeNode; CheckState: TNodeCheckState) of object;
TTVCheckStateChangingEvent = procedure(Sender: TCustomTreeView; Node: TTreeNode;
NewCheckState, OldCheckState: TNodeCheckState;
var AllowChange: Boolean) of object;
When the CheckableItems property is set to True the treeview gets checkboxes against
each node, where the checkbox state is available as a value of type TNodeCheckState
given by TTreeNode.CheckState and defaults to ncsUnchecked. By default these are
simple 2-state checkboxes, with states of ncsChecked and ncsUnchecked.
However, there are three optional extra states that can be introduced using the treeview's
set property CheckStyles:
● csPartial (a small square in the checkbox)
● csDimmed (a dimmed checkmark)
● csExclusion (a cross)
You can select any combination that makes sense for your application and when a node
checkbox is clicked sufficiently to yield one of these states they are represented by the
TNodeCheckState values ncsPartial, ncsDimmed, and ncsExclusion.
When a checkbox is clicked and its state changes the component first fires the
OnCheckStateChanging event, which is passed the old (current) and new check state and
gives the opportunity to stop the check state change occurring through its AllowChange
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
var parameter. Assuming the change is allowed then the OnCheckStateChanged event
fires passing the new check state.
7.2.6 TWICImage multi frame support
TWICImage multi frame support, there are 2 new properties in type TWICImage defined
as FrameCount and FrameIndex.
You set FrameIndex to indicate the desired frame from a multi-frame image (such as a
multi-frame TIFF file). When loading from the image file that frame is loaded if it exists or
an EInvalidOperation exception is raised; FrameIndex defaults to 0, which is valid on
images without multiple frames.
When a TWICImage loads a file (or, technically, loads a frame from a file), FrameCount will
tell you how many frames are in the file.
These two properties together allow you to read all valid frames in a multi-frame image
file.
7.2.7 New TLabelDBEdit component
There is now a data-aware version of the TLabeldEdit VCL control. To implement it, the
hierarchy of the related controls has changed:
● TCustomLabeledEdit
○ inherits from TCustomMaskEdit
○ new properties: Align, EditMask, etc. inherited from TCustomMaskEdit
● TDBEdit
○ inherits from TCustomLabeledEdit
● TDBLabeledEdit
○ new control that inherits from TDBEdit
Additionally, Olympus adds support for the TLabeledEdit control in the TFlowPanel and
TGridPanel containers.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
7.2.8 Error Messages improvements
● In case of an error creating a form from a stream, the error message now includes
the form file name.
● The Exception Dialog has an extra “Copy” button to copy the error message to the
clipboard (the copy operation was already working after selecting the text of the
label, but it wasn’t intuitive)
7.2.9 Coolbar Chevron support
Coolbar has Chevron support via a new Boolean property ShowChevron.
● When set to True this property helps ensure the user can access hidden buttons.
In the case where a TCoolBand in a TCoolBar contains a TToolBar with Wrapable
set to False, then if the band is shrunk so that 1 or more tools buttons on the
TToolBar are either not visible or not completely visible a chevron is drawn on the
band. Clicking the chevron pops up a popup menu containing items representing
all tool buttons that are partly visible or not.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
7.2.10 NumberBox
The TNumberBox class introduced in 10.4.2 has a few additional features:
● CurrencyFormat type is changed from Byte to TNumberBoxCurrencyFormat.
● There is a new ValueCurrency property.
● The DisplayFormat property is now published.
7.2.11 Threading safety improvement
In general, UI controls should be created in the main UI thread. If you create a VCL control
in a background thread, the behavior is undefined and can lead to fairly obscure access
violations.
For this reason, there is a new class property:
TControl.RaiseOnNonMainThreadUsage
When this property is True, the VCL will raise an exception in case a TWinControl window
handle is created in a thread that’s not the main thread. This prevents issues when this is
done by accident. In COM scenarios and other cases the creation of a handle in a
secondary thread might be legitimate and so it remains allowed.
7.2.12 VCL StyleUtils.inc converted to a regular unit
The include file StyleUtils.inc has been converted to a regular unit, allowing developers
(and component vendors) to better integrate their code with VCL styles support. The
previous include file, in fact, defined private types generally impossible to modify and
extend, unlike the new unit.
Warning: While we agreed to move the code to a unit, making some data types public
and accessible, we reserve the right to make changes to this style API and cannot
guarantee the same level of compatibility with external code that the VCL and RTL libraries
generally provide.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
Attention: While the new DCU files are being delivered, the source code is not part of
the installation. We’ll address this issue.
7.2.13 Smaller Changes
● Common dialogs how expose the properties EncodingIndex and ShowEncodingList
(which controls whether the dropdown encoding list is enabled and therefore
available for use)
● OnTracking event for TTrackbar (triggered when the thumb position on a trackbar
is changing).
● Options to skip disabled in TPageControl.FindNextPage with an additional
CheckTabEnabled parameter.
● TButtonCategory has a VisibleGutter property.
● TDateTimePicker and TRichEdit display properly when not enabled.
● TScrollBox, in this release, automatically supports the mouse wheel -- notice this
change might affect the behavior of existing applications in unwanted ways, as the
new default is to activate mouse wheel scrolling for controls without the focus.
● VCL function ScaleImage supports Alpha Channel.
● TVirtualImageList.Images has a proper property setter.
● TTreeNode offers support for nsDropHilited state.
● Default form size is now bigger.
● SetSelText and SetSelTextBuf offer the option not to reset the Undo buffer.
○ This is managed by a new property CanUndoSelText. It is False by default,
which maintains backwards compatibility. If set to True it allows Undo to be
called (or an Undo operation to be invoked with the UI) to undo a change
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
made with calls to SetSelText or SetSelTextBuf or by assignments to the
SelText property.
● Some small TEdgeBrowser improvements.
● TCustomTitleBarPanel now has TitleButtonClose, TitleButtonRestore,
TitleButtonMin properties, and a OnUpdateTitlebarButtons event.
● TDateTimePicker allows changing both date and time together in UI
● A TPngImage object handles Assign to and from a TWICImage object
● TWinControl now supports LockDrawing and UnlockDrawing, triggering the
execution of the WM_SETREDRAW Windows message
7.3 FireMonkey
For FireMonkey we have focused on some core refactoring, with particular focus on
desktop and Windows in particular.
7.3.1 Better FMX Windows and desktop integration
● Platform services for macOS and Windows refactored into separate units
○ IFMXMultiDisplayService, IFMXScreenService, IFMXDeviceMetricsService,
IFMXFullScreenWindowService
● Refactoring of:
○ IFMXSaveStateService
○ IFMXDeviceService
○ IFMXVirtualKeyboardService
○ IFMXTimerService
○ IFMXLoggingService
○ IFMXMenuService
● Extended IFMXMultiDisplayService and TDisplay.
● Extracted all metrics related services into FMX.Platform.Metrics.* units.
● Constraints size for forms.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
7.3.2 FireMonkey Windows High-DPI improvements
Screen service in FMX used to work in DP on all platforms except Windows. This means
TForm.Left, Top, Width and Height works in DP on all platforms except Windows.
TForm.Top, TForm.Left in a PX on Windows at the same time TForm.Width and
TForm.Height works in DP. So, some properties like Bounds returned a really wrong and
strange result (position in px, size in dp in one entity).
The same is about Screen entity, it worked in DP on all platforms except Windows. As a
result, the logic that is tied to the positioning of forms completely does not work correctly
on Windows: This is all related to the popup form display also, styled border and etc.
(there were a set of reports about issues of working popups, forms, form styled border on
HiDPI screens).
So for fixing these issues, we standardized the work of the screen service and form
positioning. Starting with 10.4.2 it works the same as for other platforms. So these changes
were intentional. Now we have further extended this change.
Specific changes for this area:
● Switch from pixels to device independent units (PX to DP), extend
IFMXMultiDisplayService
● Fixes to many related issues with features, dragging, positioning…
● Refactoring of TWindowBorderWin
● TControl has new methods for coordinate conversions:
○ ScreenToLocal/LocalToScreen
○ ConvertLocalPointFrom/ConvertLocalPointTo
7.3.3 Google Play Billing Library Version 3
The Olympus beta offers support for the latest version of Google’s Billing API, an update
that’s becoming mandatory later this year for Play Store apps (the final deadline is
November ‘21).
The new API is integrated seamlessly with the FMX library and your code should adapt
easily to the new API.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
7.3.4 Android 30 API support
● Support to target Android API 30 (a Google Play Store requirement for 2021)
● We also migrated from the old 'Support Library' libraries to the new 'AndroidX'
libraries
7.3.5 Additional Improvements
● Firemonkey Accessibility Pack is now integrated in the core product (rather than
being a separate download)
● Improved Z-Order management for combinations of styles and platform controls
● Removed old deprecated non-scoped enumerated values (that is the FMX Helper
classes added to support deprecated enumerations in 2014)
● Support for file upload in TWebBrowser on the Android platform
8 RTL and Data There are many improvements in the core RAD Studio libraries. Here we are providing a
summary of the key changes across RTL, FireDAC, HTTP and REST client libraries and more.
8.1 Platform Identifiers
RTL adds a new platform identifier, pidOSXArm64 for the macOS/Arm64 platform.
Also, the existing pidAndroid32Arm and pidAndroid64Arm identifiers are now obsolete.
These are replaced by the new pidAndroidArm32 and pidAndroidArm64, as we have
normalized all platform names:
All platform related identifiers use the same format and order of the compilers:
<Platform name> <Architecture name> <Bitness>
8.2 RTL: TZipFile
We have focused on ZIP files (that is, the TZipFile class of the RTL) quality, improvements,
and optimizations. Among others we addressed the following requests:
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
● TZipHeader has a GetFileName method
● Added support for Zip64
● Added a method to remove a file from in TZipFile
● TZipFile.IsValid() now accepts a stream parameter
● System.Zip improved to work with files larger in size than 4 GB
8.3 RTL large data structures improvements
We have made a few improvements in the use of proper data types for larger memory
structures under 64-bit compilers. For example, TMemoryStream in 64-bit supports data
structures larger than 2 GB.
Related to this, we added the new method TThread.GetTickCount64 (while the existing
TThread.GetTickCount, returning a 32-bit value, remains in the RTL for compatibility).
8.4 Record Helper for TDateTime
There is a new record helper for TDateTime, which includes a “UTC Now” function (not
available in the original Date RTL), actually called NowUTC.
The helper is in the System.DateUtils unit and includes the following (mostly self-
explanatory) long list of methods:
● Now, NowUTC, Today, Yesterday, Tomorrow
● GetDate, GetTime,
● IsInLeapYear, IsPM, IsAM, IsToday, IsSameDay
● WeeksInYear, DaysInYear, DaysInMonth
● GetYear, GetMonth, GetWeek, GetDay, GetHour, GetMinute, GetSecond,
GetMilliSecond
● StartOfTheYear, EndOfTheYear, StartOfTheMonth, EndOfTheMonth,
StartOfTheWeek, EndOfTheWeek, StartOfTheDay, EndOfTheDay
● WeekOfTheYear, DayOfTheYear, HourOfTheYear, MinuteOfTheYear,
SecondOfTheYear, MilliSecondOfTheYear, WeekOfTheMonth, DayOfTheMonth,
HourOfTheMonth, MinuteOfTheMonth, SecondOfTheMonth,
MilliSecondOfTheMonth, DayOfTheWeek, HourOfTheWeek, MinuteOfTheWeek,
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
SecondOfTheWeek, MilliSecondOfTheWeek, MinuteOfTheDay, SecondOfTheDay,
MilliSecondOfTheDay, SecondOfTheHour, MilliSecondOfTheHour,
MilliSecondOfTheMinute
● WithinPastYears, WithinPastMonths, WithinPastWeeks, WithinPastDays,
WithinPastHours, WithinPastMinutes, WithinPastSeconds, WithinPastMilliSeconds
● YearsBetween, MonthsBetween, WeeksBetween, DaysBetween, HoursBetween,
MinutesBetween, SecondsBetween, MilliSecondsBetween
● DateTimeInRange, DateInRange, TimeInRange
● YearSpan, MonthSpan, WeekSpan, DaySpan, HourSpan, MinuteSpan,
SecondSpan, MilliSecondSpan
● IncYear, IncMonth, IncWeek, IncDay, IncHour, IncMinute, IncSecond,
IncMilliSecond, AddYear, AddMonth, AddWeek, AddDay, AddHour, AddMinute,
AddSecond, AddMilliSecond
● Encode, Decode, EncodeWeek, DecodeWeek, EncodeDay, DecodeDay,
EncodeMonthWeek, DecodeMonthWeek, TryEncode, TryEncodeWeek,
TryEncodeDay, TryEncodeMonthWeek
● SetYear, SetMonth, SetDay, SetHour, SetMinute, SetSecond, SetMilliSecond,
SetDate, SetTime, SetDateTime
● CompareDateTime, SameDateTime, CompareDate, SameDate, CompareTime,
SameTime
● NthDayOfWeek, DecodeDayOfWeekInMonth, EncodeDayOfWeekInMonth,
TryEncodeDayOfWeekInMonth
● ToJulianDate, SetJulianDate, TrySetJulianDate, ToModifiedJulianDate,
SetModifiedJulianDate, TrySetModifiedJulianDate
● ToUnix, SetUnix
● ToMilliseconds, TimeToMilliseconds
● SetISO8601, TrySetISO8601, ToISO8601, SetHttpDate
● ToString, Format
The helper also introduces the following properties for TDateTime: Day, Month, Year,
Hour, Minute, Second.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
8.5 Record Helper for TCurrency
This release also introduces a helper for the TCurrency data type in Delphi,
TCurrencyHelper, similar to the TDoubleHelper. The helper has the methods ToString,
Frac, Ceil, Floor and Trunc. It also defined class functions Size, ToString, Parse, and
TryParse.
8.6 Bluetooth and BLE Improvements
We have focused on improving quality in this area for all platforms making sure all the
core demos work as expected after fixing several open issues. Improvements include both
classic Bluetooth and Bluetooth LE and most platforms, with particular focus on Windows
10 and Android (but also iOS and macOS). Improvements also include Beacons support.
The specific list of Bluetooth issues addressed is in the bug list fix below.
8.7 Additional RTL Enhancements
8.7.1 Generic Collections Improvements
When using multiple generic types, some generic collections used to have TKey and
TValue as symbolic names for the generic types. Now this is confusing as TValue is a
specific type in the RTL. To avoid any confusion the symbolic names have been changed.
There is no effect to existing code, as the symbolic names are replaced with concrete types
when the generic types are instantiated.
Additionally, there are few additional constructors for collection classes, that take as
parameters an array of values, including:
procedure DoCheckStateChanged(Node: TTreeNode; CheckState: TNodeCheckState);
virtual;
constructor TList<T>.Create(const Values: array of T);
constructor TDictionary<TKey, TValue>.Create(const AItems: array of TPair<TKey, TValue>);
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
The implementation of TDictionary Capacity, GrowThreshold and hashing has been
improved, with a better balance of performance / memory usage / minimal collisions.
The internal implementation class TListHelper has been removed in favor of using a
strongly typed field TArray<T>, updating all related streaming and data mapping code.
8.7.2 RTTI
Open array support to RTTI: allows invoking methods with an open array parameter via
RTTI and also supports open array arguments in TVirtualMethodInterceptor.
TValue adds specific support for TDateTime. Also, TValue and Variant type interchange
has been improved.
8.7.3 PPL
Made the PPL Thread pool statistics easier to access, that is, TThreadPoolStats.Get method
is now public
8.7.4 Streams
New TPointerStream class, allows reading and writing in-memory data using the TStream
interface, by indicating a pointer location and a size.
TStream.CopyFrom doesn’t require the size, which might be unknown. The method has
also been optimized when Count is large (up to 400% improvement).
8.7.5 Dates to String Conversion
Dates to strings and reverse conversions have been improved (including a few long-
standing issues). Worth to note, that now StrToDate:
● strictly follows to date format string
● supports date formats with month and day names
● supports date formats with arbitrary text inside
Also improves TFormatSettings date/time related properties initialization and unifies the
representation on all platforms.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
8.7.6 Create a Interface Instance
There is a new System.Generics.Defaults._MakeInterfaceInstance that allows creating an
interface instance, where all interface methods are represented by anonymous methods.
8.7.7 TNoRefCountObject
The new class System.TNoRefCountObject is a non-reference-counted IInterface
implementation (replacing the old and oddly named TSingletonObject)
8.7.8 Optimizations and Other
● The legacy TDatamodule.OldCreateOrder property has been removed and always
default to true. In case the property is present in a form description file, it is ignored
(but won’t generate an error). The legacy property was used for compatibility with
an older creation order logic, in the early versions of Delphi a long time ago.
● Improved Pascal System.Pos
● TArray<T>.BinarySearch optimization
● Added overloads of TList<T>.Sort( ..., Index, Count )
● Added System.IOUtils.TFile.Size
● TObject performance fixes for ClassParent and InitInstance
● Some improvements to System.IOUtils.TPath
● RTL support for a system path longer than 260 chars, if supported by the operating
system (like on recent versions of Windows)
● Added class property TThread.OnSynchronize
● The EInOutError and EInOutArgumentException messages now include the path
and have a Path field.
Improved performance of:
● _UInt32ToHexString and _UInt64ToHexString
● Parse and TryParse for TSingleHelper and TDoubleHelper
The TGUID data structure is now defined only in System.pas (there was a duplicate
definition in WinAPI.Ole2.pas)
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
8.7.9 JSON
● Moved ParseJSONValue() from TJSONObject to TJSONValue
● Added an overloaded TJSONObject.AddPair for an Integer
8.7.10 UTF8ToString Changes
The UTF8ToString overload that accepts an array of AnsiChar has been removed and
UTF8ToString(array of Byte) deprecated. The removed function is:
UTF8ToString(const S: _PAnsiChr)
The old implementation of that API ignored the length of the array and instead relied on
a NULL terminator. Simply changing the implementation would have been dangerous, as
we discovered that there was quite a bit of code that relied on the existing behaviour.
STATIC ARRAY
If you have code that invokes UTF8ToString with a static array of AnsiChar, like the
following, that code will work as it worked in previous versions:
var
Buffer: array[0..MAXPHAT] of AnsiChar;
begin
...
UTF8ToString(Buffer);
DYNAMIC ARRAY
If you have code that invokes UTF8ToString with a dynamic array of AnsiChar, like this,
that code will no longer compile:
var
Buffer: array of AnsiChar; // Or TArray<AnsiChar>
begin
...
UTF8ToString(Buffer);
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
To remedy you must switch to one of the following:
1. Cast the array to PAnsiChar
This keeps the older behavior where the API relies on a NULL terminator and ignores the
length of the array.
var
Buffer: array of AnsiChar; // Or TArray<AnsiChar>
begin
...
UTF8ToString(PAnsiChar(Buffer));
2. Use UTF8ArrayToString
This uses the new UTF8ArrayToString API that ignores NULL terminators and converts
all characters in the dynamic array.
var
Buffer: array of AnsiChar; // Or TArray<AnsiChar>
begin
...
UTF8ArrayToString(Buffer);
8.8 FireDAC
Official support for Oracle 19c and for 128-character parameter names for Oracle Stored
Procedures.
Extended TFDSortOption with soDigitsAsNumbers, matching the similar TCompareOption
in System.SysUtils.
Firedac Monitor UI improvements.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
Improved Firebird driver to look for the driver in VendorHome and not in the /bin
subfolder (which was correct for older versions of Firebird)
8.9 Internet, HTTP and REST Client Libraries
● Timeout mechanism for Backend and EMS client components:
○ The TEMSProvider, TKinveyProvider, TParseProvider classes have 2 new
properties: ConnectTimeout and ReadTimeout
○ TEMSApi.TConnectionInfo, TParseApi.TConnectionInfo,
TKinveyApi.TConnectionInfo: have variables ConnectTimeout and
ReadTimeout
○ TDSRestConnection also surfaces ConnectionTimeOut
● Added Windows support for HTTP / 2
○ New property THttpClient.ProtocolVersion
○ New property TNetHttpClient.ProtocolVersion
● New TBase64URLEncoding encoding and TNetEncoding.Base64URL property
● Switched from gethostbyname to getaddrinfo in the entire RTL, for all platforms.
● New TCertificate.PublicKey, which contains public key modulus
● ContentType now is of string type, not enum. This allows you to use any one
content type string. Also, new CustomContentType in RestRequest
● Support for TLS 1.3 in TNetHTTPClient for Windows
● Multiple improvements to TSocket
● A new component TRESTRequestDataSetAdapter simplifies uploading TDataSet
(eg, TFDMemTable) data to a server via JSON. It is a companion for the
TRESTResponseDataSetAdapter REST component on the server side.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
● The TRestClient component surfaces the SecureFailureReasons property of the
underlying HTTPClient component
● In the Vcl.Styles unit, the TCustomStyle class FCustomElements and FSource are
now declared in the protected section.
8.10 Internet Server Technologies
WebBroker
ISAPI DLL threads have a configurable StackSize, using the variable
Web.Win.ISAPIThreadPool.StackSize.
Significantly improved WebBroker performance when sending/streaming files larger than
2 GB (MaxInt).
RAD Server
Multipart/form-data support for RAD Server
DataSnap
DataSnap: The REST URI is now configurable using a new mechanism, based on a
TDSMethodMapEvent event
9 Installer Changes The Olympus installer has several changes worth noticing.
● The minimal installer has been updated to display properly on High DPI screens.
The radio buttons and checkboxes should be properly visible.
● The minimal installer offers a language selection option, rather than relying on the
OS detection like in the past. This gives a smoother experience to anyone on a
German, French, or Japanese version of Windows who wishes to install the English
version of RAD Studio.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
Additionally, the platform selection will require the selected language: a
discrepancy among the two options could lead to a mixed language IDE,
something we’d want to avoid.
● The installation is now faster. The download of complex features happens by
downloading multiple files in parallel rather than in sequence. There is parallelism
also between download and extraction of compressed files, while the installation
of the features happens in sequence. The information displayed during the
installation has been modified accordingly, and the odd “feature names” visible in
10.4.x have been removed and replaced by the number of the download file for
each feature.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
Attention: Please let us know any installation anomaly you notice or any scenario in
which installation doesn’t complete.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
10 List of Publicly Reported Bugs Fixed This is a partial list of bugs fixed up to July 19th, 2021. The list includes publicly reported
bugs and does not include duplicate reports. The entries are grouped and sorted by
component.
Summary Component/s ExternalID
[bcc32c/bcc64] Unresolved move copy constructor Compiler,
Compiler\C++
RSP-29259
static library project ignores .c files [batch compilation] Compiler,
Compiler\C++
RSP-24609
attach to C++ 64bit process and debugging it does
not work at all, 32 bit works more or less
Compiler,
Compiler\C++,
Debugger, IDE
RSP-33839
Android: Google Play requires new App signing! Compiler,
Compiler\Delphi
RSP-31332
FinalizeArray breaks finalisation order of local variables
containing managed types.
Compiler,
Compiler\Delphi,
RTL\Delphi
RSP-30487
TFDQuery (Master/Detail) with CachedUpdates Too
Slow on Delphi 10.4.2
Data RSP-34302
TIBextract not read procedure source in utf8 database Data, Data\IBX RSP-31472
IBX TIBBackupService - Cannot attach to services Data, Data\IBX RSP-31418
IBConfigService can does not work to get Journal
information in some EUA situations
Data, Data\IBX RSP-29303
TControlList fire an IMHO unwanted ItemOnClick event
when current record change
Data,
Data\LiveBindings, VCL,
VCL\Additional
RSP-33656
Unable to see items added to TList while debugging Debugger, RTL,
RTL\Delphi
RSP-33067
Can't edit TChart in FMX projects FireMonkey RSB-5031
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
Please update Play Services to the latest version FireMonkey RSP-33959
TTexture.style must contain by default volatile (to
avoid 2x memory usage on texture)
FireMonkey RSP-33388
Closing form causes access violation when keyboard is
open in grid (ios64)
FireMonkey RSP-32631
Wrong texture coordonnates on DAE model FireMonkey RSP-32340
[macOS / iOS] With GlobalUseMetal, the colors of the
emoji are reversed
FireMonkey RSP-31856
Invalid pointer operation when popup open doing
ALT-F4
FireMonkey RSP-31838
TEdit (and possibly other components) do not respect
leading spaces
FireMonkey RSP-30165
Trackbar does not work on Android with controltype
set to platform
FireMonkey RSP-29842
Delphi 10.4 FMX MediaPlayerControl issue in High DPI,
the video does not zoom in.
FireMonkey RSP-29283
FMX TControl.Touch property assignment issue FireMonkey RSP-26405
Rectangle on native TPanel does not change Fill Color FireMonkey RSP-22959
Colour listed twice FireMonkey,
FireMonkey\Componen
ts
RSP-10038
Incorrectly Creating Dylb on Mac FireMonkey, IDE,
IDE\Deployment
RSP-26860
Reference to Microsoft HTML Help Workshop does not
work anymore
Help and Doc RSP-33723
Help Insight not showing type (at least for properties) IDE RSB-5104
Changes to Conditional Defines in Project Options do
not reflect in LSP until Project Reopened
IDE RSB-5098
Add a New SDK doesn't actually add one IDE RSB-5091
Virtual Image List Editor uses too big images [High
DPI]
IDE RSB-5071
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
LSP code navigation fails when method calls its
overload
IDE RSB-5038
Editor leaves dangling vertical scrollbar behind IDE RSP-34111
Data Explorer/Multi-Device Preview tool windows
don't repaint on IDE theme change
IDE RSP-33653
Code insight floating scroll bar on top and how invoke
bug
IDE RSP-32685
Scrolling wheel mouse after selecting listbox scrolls
something else
IDE RSP-32696
[CodeInsight progress bar] hide code audit progress
bar when work id finished in project manager
IDE RSP-32748
Code Completion [complete on Tab key] IDE RSP-31660
IDE Floating windows become unresponsive IDE RSP-31276
Stepping through code causes font to be drawn sharp
for a short time
IDE RSP-30712
Cannot see breakpoint glyph and execution glyph at
same time
IDE RSP-30595
Structure window behave strange with new edit
window
IDE RSP-30059
Some colors are duplicated in
System.UITypes.TAlphaColorRec
IDE RSP-29269
Delphi closed without message IDE RSP-26399
Enable Overflow and Range checking in Debug
configuration by default
IDE RSP-16751
Code Insight window scroll bar on top of code editor IDE, IDE\Code Insight RSP-30129
Use configured resource output directory for default
resource file
IDE, Linker RSP-29756
VCL designer does not scale correctly when changing
Form.PixelsPerInch
IDE, VCL RSB-5052
Improve install process (2): Download in parallel to
unzip
Install RSP-32725
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
Better _UStrLAsg RTL, RTL\Delphi RSB-5106
RSP-27269 erroneously marked as fixed in
Olympus_doc_Build_5990.pdf
RTL, RTL\Delphi RSB-5100
[RADStudio/Sydney/en] Feedback about "Colors in
FireMonkey"
RTL, RTL\Delphi RSP-34372
Wrong declaration in Macapi.QuartzCore causes
unexpected behavior in ARM64
RTL, RTL\Delphi RSB-5060
E2202 Required package 'DesignIDEResources' not
found
RTL, RTL\Delphi RSB-5048
Update to most recent Indy for Olympus RTL, RTL\Delphi RSP-28212
Parameters in TStrings.AddStrings should be changed
to open array
RTL, RTL\Delphi RSP-34286
Inlining not happening because TypInfo missing RTL, RTL\Delphi RSB-4997
Androidx support needed RTL, RTL\Delphi RSP-33864
System._UStrLAsg should not call _UStrAddRef RTL, RTL\Delphi RSP-33447
[macOS 64] Wrong declaration in Macapi.QuartzCore RTL, RTL\Delphi RSP-27269
System.IOUtils - TPath.Combine - No longer accepting
wildcards
RTL, RTL\Delphi,
RTL\Delphi\I/O
RSB-5065
Deadlock on call TEvent.ResetEvent RTL, RTL\Delphi,
RTL\Delphi\Threads
RSB-5029
Right Click extremely slow when no context menu is
available
VCL RSP-34339
Obviously wrong code in StyleAPI.inc VCL RSP-32467
TBalloonHint not scaling correctly VCL RSP-31570
VCL Styles: TPanel flicker when ParentBackground =
False
VCL RSP-31158
TCalendarPicker is not fully DPI aware VCL RSP-30025
TPngImage should handle Assign to and from
TWICImage
VCL RSP-29020
TDateTimePicker OnChange fired twice VCL RSP-21606
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
TDateTimePicker cant change date and time together
on UI
VCL RSP-18215
10.1 List of Bugs Fixed in previous Beta
This is a partial list of bugs fixed.
Summary Component/s ExternalID
"#pragma option -aX", used in ActiveX, is ignored by
clang compiler [Fix tlibimp, not compiler]
ActiveX RSP-18471
comment is not finished in the math.h file Compiler,
Compiler\C++
RSP-32567
[bcc32c/bcc64] Unresolved move copy constructor Compiler,
Compiler\C++
RSP-29259
ifstream constructor no longer accepts FILE* as a
parameter
Compiler,
Compiler\C++
RSP-24132
TFDQuery (Master/Detail) with CachedUpdates Too
Slow on Delphi 10.4.2
Data RSP-34302
FireDAC error on call ApplyUpdates of ClientDataSet Data, Data\FireDAC RSP-34114
Unable to debug the win64 program, it prompts that
the creation process failed.
Debugger RSP-33706
Unable to create process Debugger RSP-33497
debug kernel timeout Debugger RSP-32652
Memory leak in sample HttpAsyncDownloadDemo.dpr Demos, RTL\Delphi\Net RSP-33795
Can't edit TChart in FMX projects FireMonkey RSB-5031
FMX DragDrop Events Not Triggering FireMonkey RSP-34062
DragOver isn't correctly triggered when mouse enter
in target
FireMonkey RSP-33537
Wrong texture coordonnates on DAE model FireMonkey RSP-32340
In-App Purchasing on Android requires use of Billing
API from later this year
FireMonkey RSP-32139
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
GDIpAlloc Memory Leak due to
TCanvasGDIPlus.SetSize
FireMonkey RSP-31718
TEdit (and possibly other components) do not respect
leading spaces
FireMonkey RSP-30165
FireMonkey Label truncated and then vanishes when
rotated
FireMonkey RSP-30128
Showmessage in comboboxchange accessviolation FireMonkey RSP-29841
Calls Canvas.SaveState/Canvas.RestoreState damage
the canvas state when rendering in High Performance
for the Form.Quality (FMX) mode
FireMonkey RSP-29490
FMX TControl.Touch property assignment issue FireMonkey RSP-26405
Incorrectly Creating Dylb on Mac FireMonkey, IDE,
IDE\Deployment
RSP-26860
[iOS] UILabel is missing attributedText property FireMonkey, RTL,
RTL\Delphi
RSP-33885
Localized German Strings are cut IDE RSB-5035
Code completion requires Enter key IDE RSB-4977
Stack overflow with LSP IDE RSP-33091
[CodeInsight progress bar] hide code audit progress
bar when work id finished in project manager
IDE RSP-32748
IDE Floating windows become unresponsive IDE RSP-31276
Dialog "Tools - Options - Language - Delphi - Library -
Library Path" far too slow
IDE RSP-31099
Add editor font selector to first startup wizard and
default to Consolas
IDE RSP-30750
IDE crash after setting VCL panel Align property IDE RSP-28504
Cleaning a project doesn't remove the RSM generated
from the compile
IDE RSP-28183
Missing title buttons when different than
recommended
IDE RSP-28335
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
Options/Debugger options/visualization checkboxes
overlap with frame
IDE RSP-28660
IDE is not high DPI aware - wrong manifest IDE RSP-17361
A bug in Code Completion [pressing ; should accept
the code completion entry]
IDE, IDE\Code Insight RSP-33118
DPI issue in Delphi XE 10.2.3 IDE, IDE\VCL Designer,
VCL
RSP-20269
TDatamodule.OldCreateOrder always resets to true on
descendants
IDE, VCL RSP-20016
LockBox 3.7 problems in C++ Builder CE Install RSP-34153
Language of IDE predefined? Install RSP-31312
Wrong default browsing path for all platform except
Windows
Install RSP-23929
Installer does not respect my language preferences Install RSP-17381
IDE installed in German language, altough no
additional language was selected in setup
Install RSP-17424
Download and extract in parallel Install, Install\GetIt RSP-16615
[style inc files] Publicly expose API for creating and
modifying VCL styles
RTL, RTL\C++, VCL RSP-13517
Wrong IFDEF in GetHashCode_Pointer RTL, RTL\Delphi RSB-5056
E2202 Required package 'DesignIDEResources' not
found
RTL, RTL\Delphi RSB-5048
Missing inlining because of implementation order RTL, RTL\Delphi RSB-5044
Unnecessary nil checks in
TWinBluetoothAdapter.DoStartDiscovery
RTL, RTL\Delphi RSP-34316
TValue.AsVarRec does not handle ShortString properly RTL, RTL\Delphi RSP-34305
System.Zip.TZipFile can't be used in a dynamically
loaded dll
RTL, RTL\Delphi RSP-33735
SNotificationCenterCannotPerformOperation constant
should actually refer to notifications
RTL, RTL\Delphi RSP-33205
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
Webbroker Apps still raising exception with ANSI
encoded URL (see RSP-28104)
RTL, RTL\Delphi RSP-33204
TMultiWaitEvent.WaitForAny & WaitForAll raises
EAbstractError for Events >= 2, Timeout <> INFINITE.
Timeout will also fail when GetTickCount overflows
and wraps to 0.
RTL, RTL\Delphi RSP-29673
Android/SysSocketTypes.inc -Incorrect constant value RTL, RTL\Delphi RSP-29421
AV on line 4793 of Vcl.Styles RTL, RTL\Delphi RSP-28506
TGUID redundantly defined RTL, RTL\Delphi RSP-28299
[macOS 64] Wrong declaration in Macapi.QuartzCore RTL, RTL\Delphi RSP-27269
System.TypInfo.TIntfFlag enum is missing flags RTL, RTL\Delphi RSP-24631
TBluetoothLE is not useable since the Windows-
October-Update
RTL, RTL\Delphi RSP-21711
Wrong definition value for NSNotFound in
Macapi.Foundation
RTL, RTL\Delphi RSP-21626
System._IntfWeakCopy should have its Source
parameter const
RTL, RTL\Delphi RSP-20406
New DLLShutdown routine uses wrong finalization
keyword
RTL, RTL\Delphi RSP-19587
(iOS) const
UIApplicationBackgroundFetchIntervalMinimum /
UIApplicationBackgroundFetchIntervalNever are
missing
RTL, RTL\Delphi RSP-18669
(iOS) missing setMinimumBackgroundFetchInterval /
endBackgroundTask /
beginBackgroundTaskWithExpirationHandler are
missing from UIApplication
RTL, RTL\Delphi RSP-18656
missing declaration of
UIApplicationOpenURLOptionsAnnotationKey /
UIApplicationOpenURLOptionsSourceApplicationKey
RTL, RTL\Delphi RSP-18013
System.IOUtils - TPath.Combine - No longer accepting RTL, RTL\Delphi, RSB-5065
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
wildcards RTL\Delphi\I/O
Debug message erroneously left in standard library
charconv header file
RTL\C++ RSP-34317
Right Click extremely slow when no context menu is
available
VCL RSP-34339
Close second form with cafree close all application in
vcl styles
VCL RSP-33140
Default size of a new form ad 4K monitors is too large VCL RSP-32665
TBalloonHint not scaling correctly VCL RSP-31570
TButtonedEdit wrong color for button backgrounds
with custom style
VCL RSP-31442
Standard Actions Miss ImageName Property VCL RSP-31195
InputQuery still badly broken VCL RSP-31022
10.2 List of Bugs Fixed in previous Beta
This is a partial list of bugs fixed.
Summary Component/s ExternalID
Memory corruption after exception when using
clang compiler with optimizations (-O1,-O2,-O3)
Compiler,
Compiler\C++
RSP-29944
[ICE] __finally still broken in 10.4 Compiler,
Compiler\C++
RSP-29161
Exception rethrow not working on clang 64bit Compiler,
Compiler\C++
RSP-23469
TBlueToothLE Throws Invalid Pointer Operation
Error Upon Close
Compiler,
Compiler\C++
RSP-21548
[Regression] "Minimum macOS version
supported" setting ignored
Compiler,
Compiler\Delphi
RSB-5009
URW1302 when compiling Spring Compiler,
Compiler\Delphi
RSB-4998
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
generics: record constraint no longer allows
records with string fields
Compiler,
Compiler\Delphi
RSB-4928
[REGRESSION] class constructor/destructor are
not called
Compiler,
Compiler\Delphi
RSP-30485
Can't compile a package with DosCommand
dependency
Compiler,
Compiler\Delphi
RSP-28905
[REGRESSION] Compiling from IDE is extremely
slow
Compiler, IDE RSB-4927
Unit FireDAC.Stan.Consts does not contain the
newer DBMS Releases as version Consts
Data, Data\FireDAC RSP-27548
ExplorerDevicesLECpp sample is not working on
Windows
Demos RSP-20102
Memory leak in sample
HttpAsyncDownloadDemo.dpr
Demos,
RTL\Delphi\Net
RSP-33795
FMXLinux Log.d function fails for specific
message strings
FireMonkey RSP-32303
Mousemove with LeftButtonDown is false if
control is under TLayout
FireMonkey RSP-31942
TGlyph is missing a DisableInterpolation property FireMonkey RSP-31889
On android platform, trectangle color tone gets
distorted when opacity changes if fiil color have
alpha.
FireMonkey RSP-31597
MessageDialog buttons and titles cannot be
translated
FireMonkey RSP-31514
Set FMX Form Transparency as true not work FireMonkey RSP-31382
TFlowLayout - child order completely random? FireMonkey RSP-30857
Press and hold with fmx spinedit button FireMonkey RSP-30511
FMX Android Bluetooth Le Implementation FireMonkey RSP-29936
When you open popup window, the FMX form
loses activity for a second (blinks, window title bar
becomes gray for a second).
FireMonkey RSP-29491
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
Align fit for a layout placed in a TGridPanelLayout
missbehaves
FireMonkey RSP-28593
PopupMenu isn't entirely visible in High DPI -
aware app
FireMonkey RSP-27728
IDE Crashes after building custom packages that
contain styled controls
FireMonkey RSP-27656
Beacon does not fire any events on android 9 FireMonkey RSP-27652
Clearing TText.Text should update Effect FireMonkey RSP-26648
OSX 32&64 constants like
kCGImageSourceCreateThumbnailFromImageAl
ways
FireMonkey RSP-26729
OSX 32&64
TPlatformCocoa.CreateChildMenuItems
FireMonkey RSP-26855
Firemonkey 4K support for Windows FireMonkey RSP-26453
In MacOsx (32/64 bit) error in
Bitmap.LoadThumbnailFromFile
FireMonkey RSP-26281
TCanvasGdiPlus Memory Leak FireMonkey RSP-26158
isLocationEnabled is missing from
JLocationManager
FireMonkey RSP-21365
A huge memory leak in FMX TComboBox FireMonkey RSP-19686
WebBrowser.CaptureBitmap in macOS result is
empty.
FireMonkey RSP-19448
add setDefaultTextAttributes and
setAttributedPlaceholder to UITextField
FireMonkey RSP-16971
BLE writecharacteristic is very slow on Android FireMonkey RSP-16891
Access Violation is raised if assigned a value
minor to crSizeAll(-22) to a Cursor field
FireMonkey RSP-16873
TGridPanelLayout - Margins from controls are
ignored
FireMonkey RSP-14136
TGridPanelLayout rendering problem FireMonkey,
FireMonkey\Styles
RSP-17976
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
CocoaPointerConst must work in background
thread
FireMonkey, RTL,
RTL\Delphi
RSP-23241
Infinite loop in DoGetClassicAdapter in
Android.Bluetooth
FireMonkey, RTL,
RTL\Delphi
RSP-20845
[REGRESSION] VCL Form Designer scroll bars
are not working
IDE RSB-4930
The Embarcadero GetIt server could not be
reached.
IDE RSP-33077
Another example where code navigation
(Ctrl+Click) doesn't work
IDE RSP-32556
Dialog "Tools - Options - Language - Delphi -
Library - Library Path" far too slow
IDE RSP-31099
read address 0 IDE RSP-30217
IDE titlebar measurements incorrect when
maximised
IDE RSP-22197
Include file breaks LSP code completion IDE, IDE\Code
Insight
RSP-33305
Error Insight doesn't work with big project IDE, IDE\Code
Insight
RSP-32758
"platforms" topic appears in GetIt catalog but is
empty
IDE, Install RSP-34089
LockBox 3.7 problems in C++ Builder CE Install RSP-34153
Cannot install patches Install RSP-33866
Wrong default browsing path for all platform
except Windows
Install RSP-23929
[PowerShell] GetItCmd.exe doesn't appear to
install packages
Install, Install\GetIt RSP-31350
Bluetooth LE not working properly Libraries and
Frameworks, RTL,
RTL\Delphi\Bluetooth
RSP-20296
problem using shared memory RTL, RTL\C++ RSP-19312
AcquireExceptionObject doesn't work for Clang- RTL, RTL\C++ RSP-18031
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
thrown exceptions
TValue.Cast from string to RawByteString is
broken
RTL, RTL\Delphi RSB-5012
A better IntToHex RTL, RTL\Delphi RSB-4996
More compact Parse and TryParse for
TSingleHelper and TDoubleHelper
RTL, RTL\Delphi RSB-4995
A better GUIDToString RTL, RTL\Delphi RSP-34169
A better StringToGUID RTL, RTL\Delphi RSP-34168
Range check error in System.Zip RTL, RTL\Delphi RSB-4941
Android/SysSocketTypes.inc -Incorrect constant
value
RTL, RTL\Delphi RSP-29421
TGUID redundantly defined RTL, RTL\Delphi RSP-28299
Please change using <TValue> in
generics.collections and alike
RTL, RTL\Delphi RSP-28267
TBluetoothLE is not useable since the Windows-
October-Update
RTL, RTL\Delphi RSP-21711
Add overload TList<T>.Sort( ..., Index, Count ) RTL, RTL\Delphi RSP-13756
Missing wrapper for Android Environment class RTL, RTL\Delphi RSP-12690
CLONE - 10.2 Tokyo BLE Framework fails to
discover devices on Android
RTL, RTL\Delphi,
RTL\Delphi\Bluetooth
RSP-20358
Get rid of TListHelper and use strongly typed field
(TArray<T>
RTL, RTL\Delphi,
RTL\Delphi\List/Colle
ctions
RSB-4943
TThread.BeforeDestruction should not call
WaitFor
RTL, RTL\Delphi,
RTL\Delphi\Threads
RSB-4976
[LiveBindings] TBindExpression is not evaluated
on TPrototypeBindSource.ApplyUpdates
RTL, RTL\Delphi,
VCL
RSP-34260
Application is leaking refcounts on interfaced
object after using BLE framework
RTL,
RTL\Delphi\Bluetooth
RSP-20716
BLEScanner sample does not find BLE devices
when running on desktop pc windows 10
RTL,
RTL\Delphi\Bluetooth
RSP-15489
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
Vcl.Graphics DefFontData is outdated VCL RSP-33856
TRichEdit.SelText unable to assign RTF content.
This worked before uni-code update.
VCL RSP-29654
radiogroup without frame VCL RSP-29318
Make private variables in TCustomStyle protected VCL RSP-27581
TTreeView overrides its TCanvas Font.OnChange
which breaks OnCustomDraw
VCL RSP-25914
Support transparent rich edit controls VCL RSP-13455
Add general-purpose support to
EM_FORMATRANGE to TRichEdit
VCL RSP-13454
Add support for getting/setting TRichEdit scroll
position using EM_SETSCROLLPOS /
EM_GETSCROLLPOS
VCL RSP-13453
Add support for changing margins to TRichEdit /
TEdit / TMemo
VCL RSP-13452
Add properties to TTextAttributes used by
TRichEdit to set/unset ONLY SOME font styles -
not all styles
VCL RSP-13451
TRichEdit: Add a
TParaAttributes.ConsistentAttributes that mirrors
behavior of TTextAttributes.ConsistentAttributes
VCL RSP-13443
Make the TDBRichEdit.Lines property accessible VCL RSP-13439
Update TRichEdit to support MSFTEDIT.DLL VCL RSP-13383
TRichEdit missing attributes VCL, VCL\Win32 RSP-13482
10.3 List of Bugs Fixed in previous Beta
This is a partial list of bugs fixed.
Summary Component/s ExternalID
Clang32 crash: [bcc32c Error] ...: ICE: Internal Compiler, RSP-24315
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
compiler error: 0 @ 00000000 Compiler\C++
TBlueToothLE Throws Invalid Pointer Operation
Error Upon Close
Compiler,
Compiler\C++
RSP-21548
No Upload ID returned when trying to initiate
mulipart upload to Amazon S3
Data, Data\Cloud RSP-33551
Memory Leak in TFMTBcdData Variant Type. Data, Data\DBRtl RSP-34065
FireBird library no longer resides in \bin Data, Data\FireDAC RSP-34136
Debug does not work on new Apple M1 CPU Debugger RSP-32362
ExplorerDevicesLECpp sample is not working on
Windows
Demos RSP-20102
Changes to FMX.Memo.Style FireMonkey RSB-4949
TListview missing published property Heigh FireMonkey RSP-33738
Firemonkey: Screen.Displays[].Bounds returns no
longer values in pixels for displays with Scale <>
1.
FireMonkey RSP-33412
Access Violation editing TListBox items FireMonkey RSP-33179
Access violation at shutdown if imagelist is in
datamodule
FireMonkey RSP-33084
Latest Dark Style has a missing an arrow in its
TSpinBox
FireMonkey RSP-33046
Crash when show keyboard and form is freed FireMonkey RSP-32425
FMX Edit button alignment is incorrect when
scaled
FireMonkey RSP-32307
FMXLinux Log.d function fails for specific message
strings
FireMonkey RSP-32303
Unicode text containing 'U+200C' is rendered
incorrectly in iOS and Android.
FireMonkey RSP-32194
TBaseImageList.BeforeDestruction may raise AV FireMonkey RSP-31343
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
styled firemonkey controls that use TBitmapLinks FireMonkey RSP-31208
BluetoothLE requestMTU Not implemented FireMonkey RSP-29937
Mixing on fmx application, controltype platform
and style objects.
FireMonkey RSP-26141
WebBrowser, Geolocation - geolocation
permission request does not work
FireMonkey RSP-24039
Add User Designer Guidelines FireMonkey RSP-19477
BLE writecharacteristic is very slow on Android FireMonkey RSP-16891
Colour listed twice FireMonkey,
FireMonkey\Compon
ents
RSP-10038
Add support for file upload in TWebBrowser FireMonkey,
FireMonkey\Runtime
RSP-29515
Add designer guides / rules to FMX designer, just
like VCL designer
FireMonkey, IDE RSP-14143
Embarcadero Toaster - Notification Window
"Embarcadero.Desktop.Toasts.CF4ADDBE"
FireMonkey, VCL RSP-32375
French and German DocWiki Main Page show
Platform Status instead
Help and Doc RSP-32117
"Search for Unit" dialog: edit box doesn't have
focus
IDE RSB-4932
[REGRESSION] VCL Form Designer scroll bars are
not working
IDE RSB-4930
LSP don't see a new added unit symbols IDE RSP-33501
Code completion does not offer identifiers that
don't match expected type [class helpers?]
IDE RSP-33316
Strg+Left Mouseclick don't work in some cases
(Ctrl+Left Mouse Click)
IDE RSP-33065
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
LSP Ctrl+Click navigation fails when only DCP's
referenced
IDE RSP-32666
The find declaration work only on first attempt IDE RSP-32681
mouse wheel don't works in StyleLookup property
list
IDE RSP-32615
[DelphiLSP] Using inline var type inference
prohibits code completion from providing
suggestions
IDE RSP-30588
Cannot Scroll using mouse scroll on StyleLookup
Property Editor
IDE RSP-30620
Missing hints in FMX style designer IDE RSP-14577
[Regression] [Code Completion] Changes are not
taken into account
IDE, IDE\Code Insight RSP-33549
[Regression] [Code Completion] No completion
for identifiers starting with "Is" and completion
after "Is"
IDE, IDE\Code Insight RSP-33398
code completion show helper IDE, IDE\Code Insight RSP-33393
[Regression] [Code Completion] Result for
dereferenced pointers does not contain expected
fields
IDE, IDE\Code Insight RSP-33363
LSP doesnt show errors IDE, IDE\Code Insight RSP-33060
New LSP does not recognize newly build classes. IDE, IDE\Code Insight RSP-31922
Error insight not working caused by INCLUDE
statements with relative paths
IDE, IDE\Code Insight RSP-31321
CodeInsight LSP often fails [Help Insight] IDE, IDE\Code Insight RSP-31211
LSP Code Insight not working for templates and
reserved words
IDE, IDE\Code Insight RSP-30990
Search path ending with + breaks LSP IDE, IDE\Code Insight RSP-30113
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
Form flickering when group policy is updated IDE, VCL RSP-24026
Installer doesn't respect language asked Install RSB-4929
When receiving a beacon on Windows 10, RSSI
will always be 0.
IoT, RTL RSP-20214
Bluetooth LE not working properly Libraries and
Frameworks, RTL,
RTL\Delphi\Bluetooth
RSP-20296
NotificationCenter in Windows
EnableSound:=False not working - Fix suggested
RTL RSP-16750
A better GUIDToString RTL, RTL\Delphi RSP-34169
A better StringToGUID RTL, RTL\Delphi RSP-34168
Better Pos RTL, RTL\Delphi RSB-4957
Regression: Declaring a record helper for TValue
causes errors in how the Implicit class operator
handles TDate values
RTL, RTL\Delphi RSB-4942
Range check error in System.Zip RTL, RTL\Delphi RSB-4941
Implement IntToStr branchless RTL, RTL\Delphi RSB-4940
SameText should not do those additional checks RTL, RTL\Delphi RSB-4939
Usage of System.Rtti in System.TypInfo
implementation uses avoids inlining
RTL, RTL\Delphi RSB-4937
References to TGraphicArray parameters should
be made const
RTL, RTL\Delphi RSB-4925
The use of TValue.AsType<T> within the non
generic TValue.AsXXX method causes severe
overhead
RTL, RTL\Delphi RSB-4920
Non optimal code in System.Rtti.Conv2Variant RTL, RTL\Delphi RSB-4919
System.Rtti.TValueHelper makes no sense and
actually breaks compilation
RTL, RTL\Delphi RSB-4918
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
IWMIndexer2 is incorrectly defined RTL, RTL\Delphi RSP-34054
Regression: TStreamAdapter.Seek support Size >
2Gb is broken on Windows - typo in defines
{$IFDEF Sizeof( -> {$IF Sizeof(
RTL, RTL\Delphi RSP-34049
invalid definition of the IKsPropertySet interface
(Winapi.DirectShow9)
RTL, RTL\Delphi RSP-34043
[RADStudio/Sydney/en] Feedback about
"OpenSSL"
RTL, RTL\Delphi RSP-33322
Optimize TMarshal.Copy's Dest parameter so as to
reduce unnecessary DynArrayAddRef and
DynArrayClear calls
RTL, RTL\Delphi RSP-29167
Android fails to start BLE service discovery after a
cache clear
RTL, RTL\Delphi RSP-19824
TStreamWriter.Flush throws away some IO errors RTL, RTL\Delphi RSP-16548
Improve purepascal System.Pos() RTL, RTL\Delphi RSP-13687
Changes in System.Generics.Defaults cause crash. RTL, RTL\Delphi,
RTL\Delphi\List/Colle
ctions
RSB-4931
System.SysUtils.ByteLength behaves poorly for
non UTF-16 strings
RTL, RTL\Delphi,
RTL\Delphi\Strings
RSP-9703
TThread.BeforeDestruction should not call WaitFor RTL, RTL\Delphi,
RTL\Delphi\Threads
RSB-4976
TBluetoothLEManager (?) memory leak. RTL,
RTL\Delphi\Bluetooth
RSP-31984
Application is leaking refcounts on interfaced
object after using BLE framework
RTL,
RTL\Delphi\Bluetooth
RSP-20716
Handling of BLE Manufacturer Specific Data in
Android is flawed
RTL,
RTL\Delphi\Bluetooth
RSP-17763
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
BLEScanner sample does not find BLE devices
when running on desktop pc windows 10
RTL,
RTL\Delphi\Bluetooth
RSP-15489
Non optimal for some TObject methods RTL\Delphi RSB-4922
Non optimal codegen for TObject.ClassParent RTL\Delphi RSB-4921
TEdgeBrowser.Navigate and NavigateToString
always return False for a success navigation
VCL RSP-33189
TBitBtn DoubleClick - Y coordinate is always zero VCL RSP-32493
Add TCustomCheckListBox as intermediate class
without published properties
VCL RSP-31453
Vcl.Themes - function StyleServices is inline (does
that makes sense?)
VCL RSP-30705
radiogroup without frame VCL RSP-29318
Bluetooth component causes an exception if you
repeated enable and disable it.
VCL RSP-28211
Please move TScrollingWinControl.ScaleScrollBars
from private to protected
VCL RSP-28174
Make setter and Step() methods of
TProgressControl virtual
VCL RSP-27369
TTreeView overrides its TCanvas Font.OnChange
which breaks OnCustomDraw
VCL RSP-25914
Parented controls with free notifications aren't
scaled
VCL RSP-19012
Make TCustomRadioGroup.ArrangeButtons virtual
protected
VCL RSP-11765
10.4 List of Bugs Fixed in previous Beta
This is a partial list of bugs fixed.
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
Summary Component/s ExternalID
Regression from 10.3.0 - The help file is missing in
the GetIt Package of CodeSite Express.
3rd Party RSP-23759
reference to HCATADMIN is ambiguous Compiler,
Compiler\C++
RSP-33705
bcc32c: cannot compile this 'this' captured by SEH
yet
Compiler,
Compiler\C++
RSP-23383
GetIt Eigen library does not work with all platforms Compiler,
Compiler\C++
RSP-20274
c++ program does not catch exceptions Compiler,
Compiler\C++
RSP-20067
Missing files with ld-linux.exe: start_linux64.o,
SysInit.o, end_linux64.o
Compiler,
Compiler\C++,
Compiler\C++\CLAN
G
RSP-17492
[bcc64] Using a typedef-name when naming a
destructor fails
Compiler,
Compiler\C++,
Compiler\C++\CLAN
G
RSP-9431
wrong code generation win32 optimization ON Compiler,
Compiler\Delphi
RSP-33836
Interface is not released after an exception on Linux Compiler,
Compiler\Delphi
RSP-33378
F2084 Internal Error: IRBB360 Compiler,
Compiler\Delphi
RSP-32405
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
Compiler generate bad code for x64 and correct for
x32
Compiler,
Compiler\Delphi
RSP-32643
The compiler does not generate rex prefix in some
instructions when the optimizations are enabled.
Compiler,
Compiler\Delphi
RSP-26051
Invalid compiler hints Compiler,
Compiler\Delphi
RSP-20965
Please consider adding support for YMM and ZMM
registers in the built-in assembly
Compiler,
Compiler\Delphi
RSP-18074
Digit separator support Compiler,
Compiler\Delphi
RSP-17863
inline assembly does not support AVX instructions Compiler,
Compiler\Delphi
RSP-16836
Binary literal support Compiler,
Compiler\Delphi
RSP-15539
IOS: distributed dynamic library must be signed
before to be deployed
Compiler,
Compiler\Delphi,
FireMonkey
RSP-22899
Add open array support to RTTI Compiler,
Compiler\Delphi,
RTL\Delphi
RSP-16317
Lookup fields generate error when new record is
created ADO SQLSERVER vs MSACCESS
Data, Data\ADO RSP-33088
Invalid ADO Parameters Type Mapping Data, Data\ADO RSP-29343
No Upload ID returned when trying to initiate
mulipart upload to Amazon S3
Data, Data\Cloud RSP-33551
Make DataSnap REST URI Configurable Data, Data\DataSnap RSP-17884
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
dbgrid EInvalidGridOperation Grid index out of
range
Data, Data\DBCtrls RSP-33059
Grid index out of range in TDBGrid Data, Data\DBCtrls RSP-31920
Bug in loading time values from JSON to DataSet Data, Data\DBRtl,
Data\REST
RSP-32438
Simple JSON deserialization of records incorrect
(Delphi Sydney [10.4.1])
Data, Data\DBX RSP-32285
Erro in TFDBatchMove on Execute Data, Data\FireDAC RSP-33966
TFDQuery error after exception : [FireDAC][DApt]-
402. Operation cannot performed without
assigned SelectCommand
Data, Data\FireDAC RSP-33575
FireDAC: query ShortInt parameter -1 cause range
check error in Access ODBC driver
Data, Data\FireDAC RSP-33528
TFDBatchmove Error: [FireDAC][Comp][DS]-206.
Öffnen der Datenmenge [TFDTable($03521150)]
Data, Data\FireDAC RSP-33430
FireDAC: in MetaInfoQuery for Postgres invalid
ForeignKeyFields records
Data, Data\FireDAC RSP-33383
FDBatchMove.Execute error when last line in
double-quote CSV file does not contain linefeed
Data, Data\FireDAC RSP-32465
Bug in Firedac FDconnection.ExecSQL.... if execute
two SQL query with different number parameters
and FDConnection is all time connected
Data, Data\FireDAC RSP-32608
mysql with delphi and utf8 Data, Data\FireDAC RSP-32162
Firedac (via ODBC) to Excel file is not working fully
as expected.
Data, Data\FireDAC RSP-32591
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
FireDAC: In some cases, with a bad connection, the
BLOB field is not loaded
Data, Data\FireDAC RSP-31537
Firedac Monitor : Help should be connected to the
WEB
Data, Data\FireDAC RSP-30744
Extend TFDSortOption with
SORT_DIGITSASNUMBERS
Data, Data\FireDAC RSP-30056
Optimize QueryInfo method in TIBInfo class in
FireDAC.Phys.IBWrapper unit
Data, Data\FireDAC RSP-24510
Add A REST Component To Auto Upload an
TFDMemTable Via JSON
Data, Data\FireDAC,
Data\REST
RSP-17923
TSQLiteConnection on android local service Data, Data\FireDAC,
FireMonkey, IDE
RSP-33394
DBX Error "At end of table" on Delete Record Data, Data\Midas RSP-33144
ClientDataset Refresh has strange results when
done on XML dataset with XMLTransformProvider
Data, Data\Midas RSP-31767
RESTClient freeze when used in a console
application
Data, Data\REST RSP-33605
TRESTRequest no longer correctly sets the
Content-Type correctly.
Data, Data\REST RSP-33288
restdebugger ignores mime type Data, Data\REST RSP-33192
A-sync rest request or JSON paring not thread safe Data, Data\REST RSP-32199
A RESTRequest ContentType is limited to
predefined values
Data, Data\REST RSP-31997
Make StackSize configurable for ISAPI DLL threads Data, RTL, RTL\Delphi RSP-32094
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
Somebody knows how to get the clients ip address
from within a radserver resource method?
Data\MEAP RSP-33323
Enable RAD Server to process multipart/form-data
on the server side
Data\MEAP RSP-27389
C++64: Debugger fatal error: debug kernel not
responding. The debug process willl be terminated.
Debugger RSP-29696
64-bit debugger disassembles certain instructions
incorrectly
Debugger RSP-28139
[PAClient Error] Error: E0004 File does not exist:
C:\qqq\Project2._@emb_.tmp
Debugger RSP-17589
When double click control, IDE does not create
correct code [corrupts code]
Demos, IDE RSP-27617
Integration Api 30 Android FireMonkey RSP-33978
In TLabel may appear leading spaces in new lines. FireMonkey RSP-33914
Using visual component TBackendEndpoint with
Provider and Authenticator on a Datamodul leads
to RTL270.bpl error
FireMonkey RSP-33909
Combobox: Adding ListItems programatically fails
when DropDownKind=Native
FireMonkey RSP-33857
TListbox TStyleObject not freed FireMonkey RSP-33630
TForm.ScreenToClient is incorrect on hi-resolution
displays
FireMonkey RSP-33565
DragDrop with Screen Scaling FireMonkey RSP-33450
Firemonkey Mainform Starting Position not on
Screen when using DefaultPosOnly
FireMonkey RSP-33382
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
Various FireMonkey Windows high-DPI bugs FireMonkey RSP-33254
PopupMenu behavior is incorrect FireMonkey RSP-33045
MacOS-Entitlements: Music-Read-Write is
translated to Movie-Read-Write
FireMonkey RSP-32436
Wrong rendering of strings containing emoji in
Android.
FireMonkey RSP-32190
Form.Left is wrong of
Form.Position=poDefaultPosOnly
FireMonkey RSP-32676
Menu icons appearing black when disabled in FMX
(with screens set to different scales)
FireMonkey RSP-31813
Bitmap is not updated in ListBoxItem FireMonkey RSP-30221
MainformCenter and ScreeenCenter does not work
on HIGH-DPI-Monitors
FireMonkey RSP-30718
TButton and TSpeedButton flashing when using
StayPressed and IsPressed trigger
FireMonkey RSP-27562
Form Position=MainFormCenter, ScreenCenter or
DesktopCenter are incorrect in Windows 10 and
Scale > 100%
FireMonkey RSP-27511
Trectangle.fill.kind doesn't change the value when
created in runtime
FireMonkey RSP-27407
When you create and destroy any frame that has
TwebBrowser it caused refresh problem.
FireMonkey RSP-26713
does not work even if /min option is added to start
command
FireMonkey RSP-24644
A form can not be resized by its top corners If
custom style applied
FireMonkey RSP-23057
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
Incorrect drawing of combobox-like controls on
non-standard Windows DPI scaling
FireMonkey RSP-21793
FireMonkey does not honor style window border
settings
FireMonkey RSP-22048
Styled Firemonkey Windows are too Big FireMonkey RSP-22030
Per monitor DPI scaling broken in Firemonkey FireMonkey RSP-21008
Column and Grid width problem. FireMonkey RSP-20877
Program compiled with the "Enable High-DPI"
compilation directive does not work properly
FireMonkey RSP-17999
Issue with main form in FMX app using Berlin
Update 1
FireMonkey RSP-16184
Size Constraints of Firemonkey window FireMonkey RSP-15785
FMX Windows app which have two form and both
has TWebBrowser crashes when it closed.
FireMonkey RSP-14692
Miss constraints size for firmonkey form FireMonkey RSP-13673
TMapView IOS crash when UserLocation FireMonkey,
FireMonkey\Compon
ents
RSP-30471
Opening a TPopup causes application child form to
move to back, then to front again creating an
undesirable visual effect
FireMonkey,
FireMonkey\Compon
ents
RSP-14752
Form loses focus when modal childform uses
Activecontrol
FireMonkey,
FireMonkey\Compon
ents
RSP-14747
FMX TForm.ActiveControl Never Updates At
Runtime
FireMonkey,
FireMonkey\Runtime
RSP-10496
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
MacOS: BluetoothLE not useable with Delphi 10.4.2 FireMonkey, RTL,
RTL\Delphi\Bluetooth
RSP-33267
Error opening PAS unit Encoded by UCS-2 LE BOM IDE RSP-33852
Background Build dialog is partially hidden IDE RSP-33750
Line end Combobox too short in German language IDE RSP-33633
Documentation.htm not found IDE RSP-33590
Blue dots and breakpoints on dark theme look bad IDE RSP-33522
Unable to view designer in New Edit Window IDE RSP-33435
SDK Manager is missing buttons with HighDPI IDE RSP-33417
IDE Application Title Bar is cut off on Hi-Def screen IDE RSP-33154
Exception or hang when opening certain files IDE RSP-33114
High DPI Fonts not working in ActionList editor! IDE RSP-32790
Catastrophic Error when using multiple edit and
form designer windows
IDE RSP-32501
IDE: Dialog "Load process" IDE RSP-32389
cleaning non-existent projects and units from
"reopen" in options after saving options causes
invalid pointer
IDE RSP-32634
Duplicates listed in dropdown list of Debug
Modules Add Modules dialog
IDE RSP-32693
German text in combobox truncated IDE RSP-32612
Code editor top bar fonts are too big IDE RSP-32313
Directory Edit Dialog loses selection when
changing list order
IDE RSP-32650
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
Structure panel icon for interface no longer
apropriate
IDE RSP-32671
IDE Form designer display Windows 7 forms format IDE RSP-32710
Screen position and size are not stored IDE RSP-32678
CLANG Libpath missing $(BDSLIB)\win32\release IDE RSP-31990
Numbers are not fully visible in GetIt if Windows
scaling is applied
IDE RSP-31947
Tree control in GetIt has wrong vertical alignment
for expand buttons and radio buttons if Windows
scaling is applied
IDE RSP-31946
Font size is not changed when Windows scaling is
applied
IDE RSP-31945
Project Options window caption area has wrong
height if Windows scaling is applied
IDE RSP-31941
During popup docked tool windows have wrong
sized headers when expanded while Windows
scaling is applied
IDE RSP-31939
Toolbars in Project Manager and Structure lack
auto sizing
IDE RSP-31937
Macro buttons are not properly resized and
aligned if Windows scaling is applied
IDE RSP-31935
Help Insight search edit box and desktop layout
combo are not properly aligned vertically
IDE RSP-31934
Docked window headers and IDE editor tabs are
not aligned in height and font size
IDE RSP-31933
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
IDE AV when switching WIn32<>Win64 platform
with speedbutton
IDE RSP-32592
Code Completion [complete on Tab key] IDE RSP-31660
XML Data Binding cannot be added new data type IDE RSP-31225
Windows Theme not rendering all controls
correctly
IDE RSP-31216
editor font size error. IDE RSP-31026
Change Exception Dialog Display Exception
Message in Selectable Edit
IDE RSP-30856
IDE window shrinks when opening project with
only dpr and dproj files
IDE RSP-30797
4k display, DPI scaling "System (Enhanced) =
Object Inspector problem
IDE RSP-30785
Cannot navigate to methods in record helper IDE RSP-30644
Search Box Showing White background when click IDE RSP-30641
Tools/Options dialog opens slowly IDE RSP-30323
OI broken on High DPI IDE RSP-30636
Code insight show "end: erroneous type;" inside
inherited form and few other code insight
problems in example project
IDE RSP-29357
Enum type TOTACompileMode is not complete IDE RSP-28392
Creating FireMonkey Metrolpolis App for windows
lead to invalid pointer
IDE RSP-28145
IDE combobox corrupted IDE RSP-25650
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
IDE missing a strip on the right after restore to full
4k screen from minimize
IDE RSP-25564
lost scroll bar after restore IDE IDE RSP-25704
Single Project takes longer to load IN RIO and user
feedback is worst
IDE RSP-25788
Poor UI experience in Delphi compile dialog IDE RSP-25874
Search box in Options windows does not open
Formatter section pages
IDE RSP-24625
HiDpi 120% scalling - IDE Main Window titlebar -
text partially not visible in desktop speedsettings
IDE RSP-23961
IDE on Laptop with 4K 200% high dpi monitor -
blurry fonts and small font size
IDE RSP-23795
global search edit field IDE RSP-23084
Scalling IDE GUI issues IDE RSP-23049
IDE interface issues IDE RSP-21665
10.3 IDE is totally unusable with high dpi IDE RSP-22034
RAD Studio 10.2 Tokyo Release 2 - When I set
"Disable display scaling on high DPI settings", RAD
Studio got many errors and crashed.
IDE RSP-20081
Quick edit can not been displayed in full [High DPI] IDE RSP-19965
Find in Files dialog is jumbled IDE RSP-18874
IDE : Find in Files form IDE RSP-18383
Checkboxes in IDE Object Inspector are too large
w. system text size 125%
IDE RSP-18192
HiDPI IDE issue IDE RSP-17118
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
Find panel button missing in high dpi resolution IDE RSP-17096
Option to control Font size in the IDE IDE RSP-12576
Code completion fails to list ancestor methods in
generic classes
IDE RSP-10520
Delphi IDE is not dpi aware IDE RSP-9678
Delphi crash with CodeInsight LSP IDE, IDE\Code Insight RSP-33664
Error Insight not updated after switching units IDE, IDE\Code Insight RSP-32645
Error in IDE code complete (Class Completion) IDE, IDE\Code Insight RSP-31354
LSP Code Completion fails to find all units IDE, IDE\Code Insight RSP-30707
Change versionCode type filed for Android
applications
IDE, IDE\General RSP-25667
XMLDOC not showing up for generic class instance IDE, IDE\General RSP-10406
Error message (error creating form) needs
improvement (should say which form)
IDE, IDE\General, VCL RSP-14100
Welcome dialog don't display actual choice for the
checkbox "swap the theme to match the windows
theme"
IDE, Install RSP-32520
IOS Deployment to store - BigSur 11.1 and IOS 14.3
[SOLVED]
IDE, PAServer RSP-32150
$(BDS)\source\Visualizers\BytesVisualizer.pas Install RSP-33392
...\bin\RSVARS.BAT might contain false path Install RSP-32624
Installer asks for User and Password - for what?! Install RSP-25787
Installer starts Rad Studio when not desired Install RSP-14600
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
WebBroker problem with sending/streaming files
greater 2 GB (MaxInt)
Internet RSP-23507
CLONE - Lockup on IFuture.Value RTL RSP-26603
Inefficient code in TRttiType.GetMethods RTL, RTL\Delphi RSP-33404
[REGRESSION] Extremely slow destruction of
TVirtualInterface since 10.4
RTL, RTL\Delphi RSP-32432
TValue.TryCast and implicit casting fails for TDate,
TDateTime and TTime
RTL, RTL\Delphi RSP-32083
Exception message should be more detailed RTL, RTL\Delphi RSP-31884
AnsiStrings.AnsiStrLComp segfault on Linux RTL, RTL\Delphi RSP-31595
Missing Power GUID RTL, RTL\Delphi RSP-32723
SQL_OPT_TRACE_FILE_DEFAULT in System.Odbc
wrong
RTL, RTL\Delphi RSP-31391
TList<T>.IndexOf/LastIndex of implementation not
optimal
RTL, RTL\Delphi RSP-31381
Method body of TObject.ClassInfo should be
moved up
RTL, RTL\Delphi RSP-30757
TNetHTTPClient / TCertificate too limited. RTL, RTL\Delphi RSP-30552
Add missing IUIViewSettingsInterop interface RTL, RTL\Delphi RSP-29682
Optimize TMarshal.Copy's Src parameter so as to
reduce unnecessary DynArrayAddRef and
DynArrayClear calls
RTL, RTL\Delphi RSP-29166
TStringStream load utf8 file bug RTL, RTL\Delphi RSP-28228
An overloaded TJSONObject.AddPair for an Integer RTL, RTL\Delphi RSP-27928
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
Optimize class procedure
RegisterCompressionHandler(Compression:
TZipCompression; CompressStream,
DecompressStream: TStreamConstructor); in
System.Zip
RTL, RTL\Delphi RSP-29002
Missing Windows API GetConsoleWindow RTL, RTL\Delphi RSP-29042
TGuid operator overloads should be marked as
inline
RTL, RTL\Delphi RSP-27706
TStreamReader - can result in many 'moves' on the
buffered data which looks inappropriate.
RTL, RTL\Delphi RSP-27394
TVirtualInterface access violation with array of
const parameter
RTL, RTL\Delphi RSP-27339
Stream version of the TZipFile.IsValid() RTL, RTL\Delphi RSP-27232
EAccessViolation on Format() call inside of the
SignalConverter() handler from
System.Internal.ExcUtils.pas
RTL, RTL\Delphi RSP-26383
Datasnap communication very slow compared to
using TWebRequest directly
RTL, RTL\Delphi RSP-24619
Add an Implict in TValue addressing TDateTime RTL, RTL\Delphi RSP-24602
Incorrect Rows type declaration in
WinAPI.OleDb.pas
RTL, RTL\Delphi RSP-23768
TValue.FromVarRec cannot cast to a WideString RTL, RTL\Delphi RSP-23128
TFormatSettings.ShortDateFormat is always
initialized by a pattern without century (using ICU
library)
RTL, RTL\Delphi RSP-21900
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
FormatBcd adds decimal separator to the end of
the string, although the number has no decimal
part.
RTL, RTL\Delphi RSP-21552
Move ParseJSONValue() from TJSONObject to
TJSONValue
RTL, RTL\Delphi RSP-21536
Header parameter in OnProgress event always
empty in TZipFile.Read method
RTL, RTL\Delphi RSP-21370
Create new standard TStream class:
TPointerStream
RTL, RTL\Delphi RSP-21307
System.NetEncoding wasting memory during
encoding/decoding process
RTL, RTL\Delphi RSP-21298
Add UTCNow function RTL, RTL\Delphi RSP-22362
Base64url encoding RTL, RTL\Delphi RSP-20316
TZipHeader need a GetFileName method RTL, RTL\Delphi RSP-20275
Thread-object gets destroyed twice on exception
in create
RTL, RTL\Delphi RSP-20175
TFormatSettings.Create should not recreate
ShortTimeFormat and LongTimeFormat
RTL, RTL\Delphi RSP-20159
Add a "CustomContentType" to TRestRequest RTL, RTL\Delphi RSP-19793
TMemoryStream Realloc not support Int64 For
greater than 2G
RTL, RTL\Delphi RSP-19321
System.IOUtils.TPath.HasValidPathChars() ignores
UseWildCards argument
RTL, RTL\Delphi RSP-18696
TStream.CopyFrom is slow for TMemoryStream if
Count is big
RTL, RTL\Delphi RSP-18560
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
StrToDateTime fails if ShortDateFormat =
LongDateFormat
RTL, RTL\Delphi RSP-17058
TZipFile Creates new files that are too big if
previous zip file has been opened
RTL, RTL\Delphi RSP-16963
SysErrorMessage returns wrong string RTL, RTL\Delphi RSP-17489
StrToDate does not work with Windows 10 (8) and
non US locale
RTL, RTL\Delphi RSP-16577
TZipFile Open with existing FileStream does not
update the end of file marker
RTL, RTL\Delphi RSP-16299
Exception Error seen using
System.ZLib.TDecompressionStream with
TJSONTextReader
RTL, RTL\Delphi RSP-16141
TMemoryStream does not support large (> 2 Gb)
memory allocations
RTL, RTL\Delphi RSP-16137
System.Zip doesn't work properly with files larger
in size than 4 GB
RTL, RTL\Delphi RSP-15587
Missing method to remove file from a zip-file in
TZipFile
RTL, RTL\Delphi RSP-15234
TZipFile , Zip64 support needed RTL, RTL\Delphi RSP-14774
Add System.IOUtils.TFile.Size - with example
implementation
RTL, RTL\Delphi RSP-14122
TStream.CopyFrom could be more generic RTL, RTL\Delphi RSP-12995
DateSeparator is default '/' instead of locale
separator
RTL, RTL\Delphi RSP-12860
UTF8ToString(const S: array of _AnsiChr): String;
overload; Completely wrong
RTL, RTL\Delphi RSP-10581
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
System.IOUtils.TPath.GetDownloadsPath returns
wrong folder name
RTL, RTL\Delphi RSP-10375
TBluetoothLEManager.DoDiscoveryEnd uses
wrong variable
RTL, RTL\Delphi,
RTL\Delphi\Bluetooth
RSP-31131
StrToDate treat yyyy-MM-dd same as yyyy-dd-MM RTL, RTL\Delphi,
RTL\Delphi\Date/Tim
e
RSP-16700
StrToDateTime doesn't recognise mmm / mmmm
formats - undocumented
RTL, RTL\Delphi,
RTL\Delphi\Date/Tim
e
RSP-14161
Implementation of TEnumerable<T>.ToArray is
causing severe and unnecessary code bloat
RTL, RTL\Delphi,
RTL\Delphi\List/Colle
ctions
RSP-30870
System.Net.Socket FState should not be private RTL, RTL\Delphi,
RTL\Delphi\Net
RSP-19016
Pos (ansiString) is 3x more slower than Pos
(UnicodeString)
RTL, RTL\Delphi,
RTL\Delphi\Strings
RSP-33454
Make TThreadPoolStats.GetThreadPoolStats public RTL, RTL\Delphi,
RTL\Delphi\Threads
RSP-31273
TEvent doesn't work as expected on iOS and
macOS targets
RTL, RTL\Delphi,
RTL\Delphi\Threads
RSP-16033
Paramers of TFNOleUIHook and OleDialogHook
are declared wrong.
RTL, RTL\Delphi, VCL RSP-30491
Invalid date on validate certificate THTTPClient RTL\Delphi\Net RSP-33660
THTTPClient does not send data to server when
using the method Patch
RTL\Delphi\Net RSP-33177
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
System.Net.Socket.TSocket.EndReceiveString
exception
RTL\Delphi\Net RSP-32473
Support TLS 1.3 in TNetHTTPClient for Windows RTL\Delphi\Net RSP-23445
Soap Android - Server certificate invalid or not
present
RTL\Delphi\Net,
SOAP
RSP-33609
In HTTPSoapDispatcher.DispatchRequest an
exception is nearly hidden
SOAP RSP-15891
Access violation in TTabSheet.SetTabVisible when
PageControl.MultiLie=True
VCL RSP-33557
TNumberBox Format VCL RSP-33545
CM_STYLEDCHANGE is broadcast twice VCL RSP-33221
The custom titlebar raises an stack overflow VCL RSP-32424
TPageControl.RemovePage should not switch
pages if the removed page was not active
VCL RSP-32327
Redundant code in some VCL classes
constructors/destructors
VCL RSP-32281
TDBGrid Title Font is Scaled Twice VCL RSP-31967
TVirtualImageList.Images property setter. VCL RSP-31544
TEdgeBrowser fails if placed on non-active tab of a
page control
VCL RSP-31163
Redundant checks for nil before freeing object
instance
VCL RSP-30587
Redundant assignment to timer Enabled property
before destroying timer
VCL RSP-30574
SetSelText and SetSelTextBuf reset Undo buffer VCL RSP-30405
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
TSearchBox must implement
CM_WANTSPECIALKEY
VCL RSP-30203
TEdgeBrowser only work on Application MainForm VCL RSP-29593
Some improvements that I propose to you [VCL] VCL RSP-29355
can add TLabelDBEdit component? VCL RSP-27868
Changing from WindowState = wsMaximized to
wsNormal: form is size 320x240
VCL RSP-27847
Add skip disabled overload to
TPageControl.FindNextPage
VCL RSP-27438
Add DropDownWidth property to the TComboBox VCL RSP-26519
Provide Ontracking event for TTrackbar VCL RSP-25957
TToolButton width is not scaled if the button is
invisible
VCL RSP-20496
CheckListBox doesn't invalidate text when
ItemEnabled changed
VCL RSP-18340
TCustomListView reintroduces property
MultiSelect
VCL RSP-16886
E2033 on TrackMouseEvent() VCL RSP-16181
vcl treeview add checkbox VCL RSP-15270
TRadioGroup.TabStop doesn't control whether
radio buttons receive focus
VCL RSP-14201
VCL TScrollBox does not automatically support
mouse wheel
VCL RSP-13425
XE8: VCL: TToolbar: Chevron button is missing VCL RSP-11394
Themed popup menu do not respect image size VCL RSP-10412
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero
Confidential/NDA
Bug in Vcl.Menus with TMenuItem.Shortcut and
Numpad numeric keys
VCL, VCL\Other RSP-33296