Consider the following program for Delphi 8. If the dot is removed from the $DEFINE compiler directive, the code compiles, otherwise, it fails.
Why?
program Delphi8LanguageOddities; {$APPTYPE CONSOLE} {.$DEFINE VAROBJ} uses SysUtils; {$IF Defined(VAROBJ)} procedure FillChar(var Obj: TObject; Size: Integer; Ch: WideChar); begin end; {$ELSE} procedure FillChar(Obj: TObject; Size: Integer; Ch: WideChar); begin end; {$IFEND} var A: DateTime; begin A := Now; FillChar(A, SizeOf(A), #0); end.
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