Table of Contents
12 times 12 new features in Delphi 12
RAD Studio 12 includes some great improvements for C++Builder and the launch webinar and other online content highlights it. However, it is also a fantastic release for Delphi developers. I compiled 12 lists with 12 improvements each for Delphi 12. So this is not a list of 12 improvements for Delphi 12. It’s a list of 12×12=144 improvements, plus half a dozen for native Windows bringing the total to a whopping 150 – excluding all the existing improvements for C++Builder, as here I want to underline the Delphi side (but most of the features below are in fact for both languages).
- The first blog post had 3 x 12 VCL Enhancements in Delphi 12, as you can read at https://blogs.embarcadero.com/3-x-12-vcl-enhancements-in-delphi-12/.
- The second blog post focused on FireMonkey and the Android platform support, as you can see at https://blogs.embarcadero.com/3-x-12-firemonkey-and-android-enhancements-in-delphi-12/.
- This third installment of the series has three lists focused on three related areas, Delphi Runtime Library (RTL), database access, and Internet access. For each of these three areas, I’m listing 12 new features below.
Delphi RTL
-
- For TList and descendant classes, the “List Index out of bounds” error message was enhanced to include the index being used and the valid range
- New TArray methods: IndexOf, LastIndexOf, Contains
- New TEncoding.UseBOM property to disable the requirement for a BOM in Unicode text files: TEncoding.IsBufferValid methods to check if a given buffer contains valid data for a given encoding
- More colors in System.UIConsts.Colors
- TStream gives better error messages when writing to a full disk
- TValue.FromVariant supports arrays
- Added TZipHeader.ModifiedTime, support for Deflate64 in TZipFile, added an IZipCryptor interface, with methods Decrypt and Encrypt
- TThreadPool.InitializeCOM and InitializeCOMFlags properties
- TThreadPool.OnThreadStart and OnThreadTerminate events
- TPath.GetDesktopPath and TPath.GetAppPath
- New enumerators for reading file content: TFile.GetLinesEnumerator and TTextReader
- Expanded the FormatXMLData function
The TStringList list index out of bounds error message adds the index and the valid range, both reading and writing to a list
Data, FireDAC and more
-
- Blob fields management improvements
- FireDAC SQLite has been expanded with support for newer versions of SQLite, but offering also the old version with FireDAC encryption support
- QBE (query by example) support with new TFDQBE component, this is a new way to build queries based on end user input
- New property in the FireDAC connection CommandsExecuted
- FireDAC adds support for Decimal128 in MongoDB
- SpellChecking has been made available also for TDBRichEdit
- FireDAC added support for {INTO } escape sequence for SQL Server
- Improved TBlobField display logic
- FireDAC Security options (TFDSecurityOptions): AllowedCommandKinds, AllowMultiCommands, AllowSQLChange, ExactUpdatedRecsNum
- Embedded InterBase versions for the Delphi iOS Simulator platform
- SQLite support for version 3.42
- JSON Data Binding Wizard and JSON mapping improvements
The new JSON Data Binding Wizard in Delphi 12
Internet Libraries
-
- TWinHTTPClient.DoExecuteRequest method supports data transfer of more than 4 GB
- Added support for HTTP DELETE method with content
- RESTRequest accepts multipart ContentType (plus TMultipartFormData.AddStream overload method)
- Added a new OnBeforeExecute event in TCustomRESTRequest
- Better redirect and cookie management with THTTPClient.OnRedirect, THTTPClient.OnUpdateCookie, TNetHTTPClient.OnRedirect, TNetHTTPClient.OnUpdateCookie
- New TProxyAggregateStream class (In System.Classes)
- Curl support for platforms other than Linux, including Windows
- Ability to access data while it is received in an HTTP (or REST) request with THTTPRequest.OnReceiveDataEx
- RAD Server Performance Improvement (with the FastMM5)
- RAD Server paging Improvements: TEMSDataSetResource.PageSize, TEMSDataSetResource.PageSizeParamName, TEMSDataSetResouceOption.roEnablePageSizing
- Squid encoding Library and support for using Sqids for URLs in RAD Server
- Improved RAD Server Session Authentication (TCustomBackendAuth.ExportLogin,TCustomBackendAuth.ImportLogin)
Design. Code. Compile. Deploy.
Start Free Trial Upgrade Today
Free Delphi Community Edition Free C++Builder Community Edition
The JSON Data Binding Wizard did not show up in my RAD Studio 12 File|New menu.
Any idea why?
Not sure.
Did you follow the instructions here? https://docwiki.embarcadero.com/RADStudio/Athens/en/The_JSON_Data_Binding_Wizard
I am not sure, but I think you might need to install modeling support but this is a guess on my part, sorry.
Hello is there any doc/help/sample about libCURL use with Delphi ?
Here’s a few examples of use:
https://ideasawakened.com/post/libcurl-and-delphi
https://github.com/isemenkov/libpascurl