On Thu, 30 Sep 2010, Adem wrote:

On 2010-09-30 18:07, Michael Van Canneyt wrote:
Actually, if I were DoDi, I'd probably bring all those units (that do nothing but declare various types and constants) in the uses secions of globals.pas into globals.pas. I don't see why bringing together all the globals together should make everything dependent on everything else; after all 'globals' are those variables/routines that are common to all.
 I think there is a misunderstanding: 'global variables' <> 'globals'.
True. 'Globals' include 'global variables', structures and routines.

He meant variables that are not part of an object, but declared as a unit
variable. If you put all such 'global' variables in 1 unit, you do drag in all the original units, if the variables are typed.
I checked the following units used in globals.pas.

 -- version.pas
 Uses no external units. Comprises of a few type/constant declarations.

 -- globtype.pas
 Uses no external units. Comprises of a few type/constant declarations.

 -- systems.pas
  Uses some external units, all except one is already used in globals.pas.
The only extra unit is {$ifdef FreeBSD},SysCtl,{$endif} which could easily be added to the uses section (or the body) of globals.pas.

 -- cpuinfo.pas
  Uses no external units. Comprises of a few type/constant declarations.

IOW, all these units could be combined into globals.pas

You still don't understand.

take the unit export. It contains:

var
  CExportLib : array[tsystem] of TExportLibClass;
  ExportLib  : TExportLib;

If you want to move the *global variables* (as in: unit scope) CExportLib,ExportLib to globals, you must add export to the globals unit.

Michael.
_______________________________________________
fpc-devel maillist  -  fpc-devel@lists.freepascal.org
http://lists.freepascal.org/mailman/listinfo/fpc-devel

Reply via email to