Kinook Software Forums

Kinook Software Forums (http://www.kinook.com/Forum/index.php)
-   [VBP] General Discussion (http://www.kinook.com/Forum/forumdisplay.php?f=2)
-   -   Script expression for macro's that are not always defined? (http://www.kinook.com/Forum/showthread.php?t=4297)

Rogier 11-12-2009 12:51 PM

Script expression for macros that are not always defined?
 
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:
Code:

[((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 01: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:
Code:

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/Ma...ripteditor.htm
http://www.kinook.com/VisBuildPro/Ma...xpressions.htm
http://www.kinook.com/VisBuildPro/Manual/buildrules.htm

Rogier 11-12-2009 01:34 PM

Ok, thanks, will set things up like that.


All times are GMT -5. The time now is 04:45 PM.


Copyright 1999-2019 Kinook Software, Inc.