As everyone knows, Delphi 8 is Borland's incarnation of Delphi for the Microsoft .NET Framework. Due to licensing issues (which I think is just Microsoft flexing their muscle), Borland can't name Delphi as Delphi.NET.
Instead of giving everyone an introduction on what Delphi 8 is about, which Borland has done a fine job of, let's look at issues that Delphi 8 itself has.
You cannot declare properties with attributes that does not descend from TCustomAttribute.
The following Delphi code fragment
[Xml('F')]property F: Integer read FX write FX;
doesn't compile, while the C# code fragment
[XmlAttribute(”F”)]public int F { get {return FX; } set { FX = value; }}
does compile.
In 2017, with the release of Delphi 10.2 Tokyo, Embarcadero introduced a specialized implementation of the Observer pattern into the System.Classes unit. While it has been in the wild for 9 years, it remains a "hidden" architecture for many, primarily because it serves as the invisible engine behind LiveBindings. Other than live bindings, you can also use the Observer pattern as a way to update component settings to the Windows registry, an .ini file, or persist it elsewhere.
System.Classes