I've done some research for a Delphi XE3 workshop I'm holding at my office tomorrow (in Italian). Beside the relevant new feature, I found some minor but interesting ones. Here I'm focusing mostly in the RTL area.
Ignoring some relevant changes (mostly in preparation for the new mobile compiler), here are some nice tidbits:
- The classic TMethod record (used for method references, aka events) has comparison operators
- The Pos function has an offset, basically duplicating PosEx.
- What is the TPtrWrapper record? An “opaque pointer wrapper”... and this means? (I know, I'm teasing)
- Plus the helpers for Single, Double, Extended.
In many cases, there is not extended usage of generic lists for implementations (rather than pointer-based TList). Examples are the FComponents list inside a TComponent. Also, arrays are often replaced with TList<T>.
There are many changes to streams. Beside the new Skip method, there are many type-safe ReadData and WriteData methods, replacing the untyped Read and Write and clearly meant for the "nextgen" compiler, as the source code clearly hints.
There are also new custom attributes for what were formerly compiler-specific RTTI extensions for properties: Default, NoDefault, and Stored (plus a new ObservableMember). This new mechanism for defining the default values for properties will have a significant impact going forward and is already used in the database part of the RTL. This clearly deserves a more in-depth analysis.
New RTL Units
Finally, here are some of the new RTL units:
- System.Actions with shared code between VCL and FMX
- System.Sensors which has core platform-agnostic support for sensors of the following categories (comign from the internal sensor-types enumeration): Location, Environmental, Motion, Orientation, Mechanical, Electrical, Biometric, Light, and Scanner
- System.Sqlite with the low-level interfaces to the Sqlite database (there is also higher level support in the form of a dbExpress driver).
As always, beside major features each new version of Delphi has some small improvements here and there, which can help your daily work. Of course, developers would want more...