PDA

View Full Version : Script expression for macro's that are not always defined?


Rogier
11-12-2009, 11:51 AM
For every action, you can set a condition "build only if macro or expression ... is true/false/defined/undefined/etc."

Now, occasionally I want to build a step if some macro (let's say "UnsureMacro") is either not defined, or if it's true.

To pull this off I've been messing with a temporary macro "DO_IT" which I first set to true (always), and then (in a separate set macro action) set it to %UnsureMacro% if UnsureMacro is defined.
Then in the actual action, I enable the condition "only if %DO_IT% is true".

This works, but it feels kinda clumsy. Is there some script expression in which I can combine this, so I don't have to mess with a temp macro and separate actions?

I tried stuff like this:[((vbld_AllMacros()("UnsureMacro")) Is Nothing) OR ((vbld_AllMacros()("UnsureMacro"))<>"0")]But that still results in an error if UnsureMacro is not defined.

If I write a complete script for this, I can do it, but is there perhaps a neat tight single expression that does the same?

kinook
11-12-2009, 12:31 PM
VBScript doesn't do short-circuit evaluation, so you would need to create a project or global script function (View | Other Windows | Script Editor) like this:Function CheckMacro(name)
CheckMacro = False
If vbld_AllMacros()(name) Is Nothing Then
CheckMacro = True
Else
CheckMacro = CBool(vbld_AllMacros()(name))
End If
End Function
and reference this function in the rule:

build only if macro or expression
[CheckMacro("UnsureMacro")]
is true

http://www.kinook.com/VisBuildPro/Manual/scripteditor.htm
http://www.kinook.com/VisBuildPro/Manual/scriptexpressions.htm
http://www.kinook.com/VisBuildPro/Manual/buildrules.htm

Rogier
11-12-2009, 12:34 PM
Ok, thanks, will set things up like that.