On Wed, 13 Sep 2017, Mattias Gaertner via Lazarus wrote:

On Wed, 13 Sep 2017 10:44:23 +0200 (CEST)
Michael Van Canneyt via Lazarus <lazarus@lists.lazarus-ide.org> wrote:

[...]
As long as there are no command-line switch and directive for setting namespaces, they are completely useless. And even with them, the benefit is
doubtful.

The benefit of writing fpreport.exporthtml versus fpreportexporthtml is zero.

It's a little bit better than zero. For example shorter uses clause.

Without using a switch to set namespaces ? Please Explain ?


os.utils.pas(14)
testns.dpr(6) Error: E2003 Undeclared identifier: 'webfunction'
testns.dpr(7)

webfunction is in the web.utils.pas unit.

Did you add "uses utils"?

Yes, obviously. Here is the test program:

program testns;

uses utils;

begin
  writeln(webfunction);
end.

unit web.utils;

interface

function webfunction : string;

implementation

function webfunction : string;

begin
  Result:='web';
end;

end.

unit os.utils;

interface

function osfunction : string;

implementation

function osfunction : string;

begin
  Result:='os';
end;

end.

There is no switch to use "web.*" like in Java.

In Delphi there is: /NSweb.

But as soon as you use 2 namespaces (/NSos /NSWeb), you are stuck. As you see from the output I posted, it compiles first os.utils and uses that to satisfy the "uses utils;".

To be complete: it depends on the order of the NS switches, if you reverse the order, it will work - but that doesn't help if you have a big project which has many units using utils from one or the other namespace. The first one wins.

So, to disambiguate, that forces me to write

uses web.utils;

"uses utils" should be enough.

As I demonstrated: it clearly is not.

I carefully tested everything before posting my remark.

Michael.
--
_______________________________________________
Lazarus mailing list
Lazarus@lists.lazarus-ide.org
https://lists.lazarus-ide.org/listinfo/lazarus

Reply via email to