UnuseModule cases

Just starting out? Need help? Post your questions and find answers here.
Paradox
User
User
Posts: 23
Joined: Tue Dec 09, 2014 7:16 pm
Location: Brasil

UnuseModule cases

Post 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?
User avatar
mhs
Enthusiast
Enthusiast
Posts: 101
Joined: Thu Jul 02, 2015 4:53 pm
Location: Germany
Contact:

Re: UnuseModule cases

Post 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
User avatar
Lunasole
Addict
Addict
Posts: 1091
Joined: Mon Oct 26, 2015 2:55 am
Location: UA
Contact:

Re: UnuseModule cases

Post 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
"W̷i̷s̷h̷i̷n̷g o̷n a s̷t̷a̷r"
Post Reply