The Wiert Corner – irregular stream of stuff

Jeroen W. Pluimers on .NET, C#, Delphi, databases, and personal interests

  • My badges

  • Twitter Updates

  • My Flickr Stream

  • Pages

  • All categories

  • Enter your email address to subscribe to this blog and receive notifications of new posts by email.

    Join 4,262 other subscribers

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

This site uses Akismet to reduce spam. Learn how your comment data is processed.