[fpc-pascal] Re: [Bulk] Re: Namespaces Support

Marcos Douglas md at delfire.net
Wed Oct 30 18:58:11 CET 2013

On Tue, Oct 29, 2013 at 5:05 PM, Dmitry Boyarintsev
<skalogryz.lists at gmail.com> wrote:
> On Tue, Oct 29, 2013 at 3:50 PM, Marcos Douglas <md at delfire.net> wrote:
>> Yes, works... but the language allow hide the unit name and nobody
>> uses unit name as an identifier in 99% of cases, Am I right? So,
>> problems can be happen.
> From my experience I'd say no.
> I actually had to use the explicit unit name in probably 2% of the code.
> Back from Delphi days: some of the functions between WinAPI (windows.pas)
> and VCL (sysutils.pas) are actually using the same name.
> So specifying the exact unit name is required to get the code compiled
> properly.
> There were some collisions on MacOSX (carbon) type names with LCL type
> names.
> So it's not that unrare thing to happen.
> And as you've given example above. If I'm writing a unit that uses two
> separate units with the same identifiers reused, I'd recommend to specify a
> unit name explicitly. (Just not to rely on a compiler doing it right for
> you).
> uses
>   windows, graphics;
> var
>   wb : Windows.TBitmap;
>   gb : Graphics.TBitmap.
> or
> uses
>   windows, graphics;
> type  // declare once, use everywhere
>   TWindowsBitmap = Windows.TBitmap;
>   TGraphicsBitmap = Graphics.TBitmap;
> var
>   wb : TWindowsBitmap;
>   gb : TGraphicsBitmap.
> thanks,
> Dmitry

Yep, this is a good tip if you have a couple of types and works.
But, if you have two or more units that have many types and/or
functions that have the same name, then this job -- create an alias --
is boring. I had this problem just one time in my life, I confess, but

But, little collisions happen easily -- using procedures/functions is
more easy -- because, as you said, we only use the unit name as a
prefix (2% code) only if we know, previously, that we should use.

I guess I will not convince you, right? :)
That's Ok.

Marcos Douglas

More information about the fpc-pascal mailing list