Page 1 of 1

UnuseModule cases

Posted: Thu Jul 07, 2016 7:41 pm
by Paradox

Code: Select all

Procedure example()
  UseModule MTest
  If o
    UnuseModule MTest
    ProcedureReturn 
  EndIf
  UnuseModule MTest
EndProcedure

Procedure example()
  UseModule MTest
  If o
    ProcedureReturn 
  EndIf
  UnuseModule MTest
EndProcedure
What correct?

Re: UnuseModule cases

Posted: Thu Jul 07, 2016 8:09 pm
by mhs
I would say this one:

Code: Select all

Procedure example()
  UseModule MTest
  If o
    ProcedureReturn
  EndIf
  UnuseModule MTest
EndProcedure
or if it fits better:

Code: Select all

UseModule MTest
Procedure example()
...
EndProcedure
Procedure example2()
...
EndProcedure
UnuseModule MTest

Re: UnuseModule cases

Posted: Thu Jul 07, 2016 8:27 pm
by Lunasole
UseModule/UnuseModule are compiler directives, generally they are not added and executed as real code in resulting exe.
So doesn't matter, both variants are OK (the same with Macro/UndefineMacro for example)

See following example, module variable becomes unaccessible even after 2nd example where UnuseModule is placed where it never "executed"

Code: Select all

EnableExplicit

DeclareModule MTest
	A.l
EndDeclareModule
Module MTest
EndModule


Procedure example()
	UseModule MTest
	
	Protected o
	If o
		UnuseModule MTest
		ProcedureReturn 
	EndIf
	UnuseModule MTest
	
EndProcedure


Procedure example2()
	UseModule MTest
	Protected o = #True
	If o
		Debug A
		ProcedureReturn 
	EndIf
	UnuseModule MTest
EndProcedure

example()
example2()
Debug A