rad studio “olympus” beta

112
Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero Confidential/NDA RAD Studio “Olympus” Beta Build 6121, July 19 th , 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

Upload: others

Post on 26-Nov-2021

18 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 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

Page 2: RAD Studio “Olympus” Beta

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

Page 3: RAD Studio “Olympus” Beta

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

Page 4: RAD Studio “Olympus” Beta

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

Page 5: RAD Studio “Olympus” Beta

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

Page 6: RAD Studio “Olympus” Beta

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

Page 7: RAD Studio “Olympus” Beta

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.

Page 8: RAD Studio “Olympus” Beta

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.

Page 9: RAD Studio “Olympus” Beta

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.

Page 10: RAD Studio “Olympus” Beta

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.

Page 11: RAD Studio “Olympus” Beta

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.

Page 12: RAD Studio “Olympus” Beta

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

Page 13: RAD Studio “Olympus” Beta

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.

Page 14: RAD Studio “Olympus” Beta

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

Page 15: RAD Studio “Olympus” Beta

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.

Page 16: RAD Studio “Olympus” Beta

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.

Page 17: RAD Studio “Olympus” Beta

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.

Page 18: RAD Studio “Olympus” Beta

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?

Page 19: RAD Studio “Olympus” Beta

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

Page 20: RAD Studio “Olympus” Beta

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.

Page 21: RAD Studio “Olympus” Beta

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”.

Page 22: RAD Studio “Olympus” Beta

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.

Page 23: RAD Studio “Olympus” Beta

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):

Page 24: RAD Studio “Olympus” Beta

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.

Page 25: RAD Studio “Olympus” Beta

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.)

Page 26: RAD Studio “Olympus” Beta

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.

Page 27: RAD Studio “Olympus” Beta

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.

Page 28: RAD Studio “Olympus” Beta

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:

Page 29: RAD Studio “Olympus” Beta

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.

Page 30: RAD Studio “Olympus” Beta

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.

Page 31: RAD Studio “Olympus” Beta

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"

}

}

}

Page 32: RAD Studio “Olympus” Beta

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

Page 33: RAD Studio “Olympus” Beta

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.)

Page 34: RAD Studio “Olympus” Beta

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.

Page 35: RAD Studio “Olympus” Beta

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

Page 36: RAD Studio “Olympus” Beta

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,

Page 37: RAD Studio “Olympus” Beta

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)’.

Page 38: RAD Studio “Olympus” Beta

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.

Page 39: RAD Studio “Olympus” Beta

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 ✔ ✔ ✔

Page 40: RAD Studio “Olympus” Beta

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).

Page 41: RAD Studio “Olympus” Beta

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

Page 42: RAD Studio “Olympus” Beta

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.

Page 43: RAD Studio “Olympus” Beta

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:

Page 44: RAD Studio “Olympus” Beta

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>();

Page 45: RAD Studio “Olympus” Beta

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

Page 46: RAD Studio “Olympus” Beta

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);

Page 47: RAD Studio “Olympus” Beta

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)

Page 48: RAD Studio “Olympus” Beta

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;

Page 49: RAD Studio “Olympus” Beta

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

Page 50: RAD Studio “Olympus” Beta

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.

Page 51: RAD Studio “Olympus” Beta

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.

Page 52: RAD Studio “Olympus” Beta

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.

Page 53: RAD Studio “Olympus” Beta

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;

Page 54: RAD Studio “Olympus” Beta

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

Page 55: RAD Studio “Olympus” Beta

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.

Page 56: RAD Studio “Olympus” Beta

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.

Page 57: RAD Studio “Olympus” Beta

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.

Page 58: RAD Studio “Olympus” Beta

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

Page 59: RAD Studio “Olympus” Beta

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.

Page 60: RAD Studio “Olympus” Beta

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.

Page 61: RAD Studio “Olympus” Beta

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:

Page 62: RAD Studio “Olympus” Beta

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,

Page 63: RAD Studio “Olympus” Beta

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.

Page 64: RAD Studio “Olympus” Beta

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>);

Page 65: RAD Studio “Olympus” Beta

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.

Page 66: RAD Studio “Olympus” Beta

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)

Page 67: RAD Studio “Olympus” Beta

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);

Page 68: RAD Studio “Olympus” Beta

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.

Page 69: RAD Studio “Olympus” Beta

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.

Page 70: RAD Studio “Olympus” Beta

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.

Page 71: RAD Studio “Olympus” Beta

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.

Page 72: RAD Studio “Olympus” Beta

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.

Page 73: RAD Studio “Olympus” Beta

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

Page 74: RAD Studio “Olympus” Beta

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

Page 75: RAD Studio “Olympus” Beta

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

Page 76: RAD Studio “Olympus” Beta

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

Page 77: RAD Studio “Olympus” Beta

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

Page 78: RAD Studio “Olympus” Beta

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

Page 79: RAD Studio “Olympus” Beta

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

Page 80: RAD Studio “Olympus” Beta

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

Page 81: RAD Studio “Olympus” Beta

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

Page 82: RAD Studio “Olympus” Beta

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

Page 83: RAD Studio “Olympus” Beta

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

Page 84: RAD Studio “Olympus” Beta

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

Page 85: RAD Studio “Olympus” Beta

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

Page 86: RAD Studio “Olympus” Beta

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

Page 87: RAD Studio “Olympus” Beta

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

Page 88: RAD Studio “Olympus” Beta

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

Page 89: RAD Studio “Olympus” Beta

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

Page 90: RAD Studio “Olympus” Beta

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

Page 91: RAD Studio “Olympus” Beta

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

Page 92: RAD Studio “Olympus” Beta

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.

Page 93: RAD Studio “Olympus” Beta

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

Page 94: RAD Studio “Olympus” Beta

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

Page 95: RAD Studio “Olympus” Beta

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

Page 96: RAD Studio “Olympus” Beta

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

Page 97: RAD Studio “Olympus” Beta

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

Page 98: RAD Studio “Olympus” Beta

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

Page 99: RAD Studio “Olympus” Beta

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

Page 100: RAD Studio “Olympus” Beta

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

Page 101: RAD Studio “Olympus” Beta

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

Page 102: RAD Studio “Olympus” Beta

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

Page 103: RAD Studio “Olympus” Beta

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

Page 104: RAD Studio “Olympus” Beta

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

Page 105: RAD Studio “Olympus” Beta

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

Page 106: RAD Studio “Olympus” Beta

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

Page 107: RAD Studio “Olympus” Beta

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

Page 108: RAD Studio “Olympus” Beta

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

Page 109: RAD Studio “Olympus” Beta

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

Page 110: RAD Studio “Olympus” Beta

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

Page 111: RAD Studio “Olympus” Beta

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

Page 112: RAD Studio “Olympus” Beta

Copyright © 2021 Embarcadero Technologies, Inc. | Embarcadero

Confidential/NDA

Bug in Vcl.Menus with TMenuItem.Shortcut and

Numpad numeric keys

VCL, VCL\Other RSP-33296