What is the difference in the code shown below in Delphi 7, and Delphi 8?
program Project2; {$APPTYPE CONSOLE} uses SysUtils; type TSome = procedure of object; TSomeObj = class private FOnSome: TSome; procedure MySome1; public procedure DoSome; property OnSome: TSome read FOnSome write FOnSome; end; { TSomeObj } procedure TSomeObj.DoSome; begin if Assigned(FOnSome) then FOnSome; end; procedure TSomeObj.MySome1; begin end; procedure OutsideSome1; begin end; var SomeObj: TSomeObj; begin SomeObj := TSomeObj.Create; SomeObj.OnSome := OutsideSome1; 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