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 12x12=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).

Delphi RTL

    1. 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
    2. New TArray methods: IndexOf, LastIndexOf, Contains
    3. 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
    4. More colors in System.UIConsts.Colors
    5. TStream gives better error messages when writing to a full disk
    6. TValue.FromVariant supports arrays
    7. Added TZipHeader.ModifiedTime, support for Deflate64 in TZipFile, added an IZipCryptor interface, with methods Decrypt and Encrypt
    8. TThreadPool.InitializeCOM and InitializeCOMFlags properties
    9. TThreadPool.OnThreadStart and OnThreadTerminate events
    10. TPath.GetDesktopPath and TPath.GetAppPath
    11. New enumerators for reading file content: TFile.GetLinesEnumerator and TTextReader
    12. Expanded the FormatXMLData function

      144 indexoutofbounds

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

    1. Blob fields management improvements
    2. FireDAC SQLite has been expanded with support for newer versions of SQLite, but offering also the old version with FireDAC encryption support
    3. QBE (query by example) support with new TFDQBE component, this is a new way to build queries based on end user input
    4. New property in the FireDAC connection CommandsExecuted
    5. FireDAC adds support for Decimal128 in MongoDB
    6. SpellChecking has been made available also for TDBRichEdit
    7. FireDAC added support for {INTO } escape sequence for SQL Server
    8. Improved TBlobField display logic
    9. FireDAC Security options (TFDSecurityOptions): AllowedCommandKinds, AllowMultiCommands, AllowSQLChange, ExactUpdatedRecsNum
    10. Embedded InterBase versions for the Delphi iOS Simulator platform
    11. SQLite support for version 3.42
    12. JSON Data Binding Wizard and JSON mapping improvements

      screenshot 2023 11 06 at 10 36 07 pm

The new JSON Data Binding Wizard in Delphi 12

Internet Libraries

    1. TWinHTTPClient.DoExecuteRequest method supports data transfer of more than 4 GB
    2. Added support for HTTP DELETE method with content
    3. RESTRequest accepts multipart ContentType (plus TMultipartFormData.AddStream overload method)
    4. Added a new OnBeforeExecute event in TCustomRESTRequest
    5. Better redirect and cookie management with THTTPClient.OnRedirect, THTTPClient.OnUpdateCookie, TNetHTTPClient.OnRedirect, TNetHTTPClient.OnUpdateCookie
    6. New TProxyAggregateStream class (In System.Classes)
    7. Curl support for platforms other than Linux, including Windows
    8. Ability to access data while it is received in an HTTP (or REST) request with THTTPRequest.OnReceiveDataEx
    9. RAD Server Performance Improvement (with the FastMM5)
    10. RAD Server paging Improvements: TEMSDataSetResource.PageSize, TEMSDataSetResource.PageSizeParamName, TEMSDataSetResouceOption.roEnablePageSizing
    11. Squid encoding Library and support for using Sqids for URLs in RAD Server
    12. Improved RAD Server Session Authentication (TCustomBackendAuth.ExportLogin,TCustomBackendAuth.ImportLogin)