Delphi unit aliases: multiple ones can point to the same unit
Posted by jpluimers on 2020/08/20
A while ago, I had to figure out how to get some GExperts stuff cross-compile to older Delphi versions, because of UITypes
usage that is not available in Delphi XE and lower (but much of what it contains is in the Types
unit).
So I went down memory lane, as I remember in Delphi 2, the Delphi 1 WinTypes
and WinProcs
units were merged into the Windows
unit.
A quick search revealed the stackoverflow entry mentioned here:
for the Delphi 1 -> Delphi 2 migrations, these aliases were used where multiple units pointed to the same one:
WinTypes=Windows;WinProcs=Windows;DbiProcs=BDE;DbiTypes=BDE;DbiErrs=BDE
See [WayBack] delphi – wintypes.dcu not found and code completion stops working – Stack Overflow
A longer search found this in my own archives:
File D2-CS-2.0\DEMOS\DOC\AUTOPROJ\AUTOPROJ.DOF
Has this line:
UnitAliases=WinTypes=Windows;WinProcs=Windows
Source: [WayBack] GX_GenericUtils.pas
fails to build in Delphi 2007 because it uses unit UITypes
· Issue #22 · jpluimers/GExperts · GitHub
(Ab)using unit aliases to fail on VCL
You can use unit aliases so your applications cannot use the VCL any more.
The trick is to alias Forms or VCL.Forms
into something that does not exists, like Forms=__no_VCL_Forms__
. The reason this works is that any VCL application uses the Forms
unit because of the Forms.Application
variable.
Reference:
–jeroen
Leave a comment