Working on an app today, I discovered 2 things that I'd like to note down.
P := nil;... Do some other stuff here...ReallocMem(P, NewSize); // Even if P has not been allocated any memory, it's okay to call it, as ReallocMem will check to see if P is nil or not. If P is nil, then it allocates the memory. Otherwise, it'll expand the block of memory to the new size, and copy the existing data over to the newly allocated memory.
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