|
The PGM Functions
Library enhances Macro Express functionality by providing
categories of pre-designed, callable, reusable functions all
in a standard Macro Express library file (.mex), which may be
imported into your macro applications.
Reusable
Macro Functions
Any repeatable task performed
on your computer is a candidate to be a macro, of course. But
did you know that any repeatable task that your macro performs
is a candidate to be a reusable function? Think of reusable
functions as custom-built commands, or black boxes, which
extend the Macro Express built-in commands to suit your needs.
Imagine having an unlimited number of commands available at
your fingertips to do almost any imaginable task.
Macro Express contains approximately
300+ built-in, ready-to-use commands, so why in the world would
anybody want, or need more? Because we, as users and developers,
always want more, and
well, just need more. Even if Macro
Express had 1,000 commands, this would still be true. Why? Because,
like any other programming language, the commands themselves
are just building blocks used in the construction of both simple
and complex tasks.
Complex tasks, or macros,
can be built from a series of simple tasks (reusable functions),
which in turn, are built from the Macro Express commands. The
PGM Functions Library provides for you some of these
simple, but ready-made tasks.
If you need to:
· Easily create reusable
functions
· Use multiple functions without overwriting variables
· Time your macros for efficiency
· Reliably launch applications
· Keep an unattended operations log of events
· Do date calculations
· Manipulate strings
· Parse strings
· Search strings
· Count the occurrence of one string in another
· Convert decimal values to hexadecimal strings
· Find square roots
· Compare files and folders
· Parse path names
· Validate file names
then the PGM Functions
Library is for you!
How They Work
Plain and simple
every
one of our functions is called via the Macro Express Macro
Run command. Let us assume, for the moment, that your building
a macro to save data from user input, or other application,
to a file. Some if it is in hexadecimal format and needs to
be converted. Normally, you would simply place code in your
macro to handle the conversion. Like this:
// Convert
a hex string %T10% to a decimal value %D10%
Variable Modify String: Uppercase %T10%
Variable Set Integer %N1% from Length of Variable %T10%
Variable Set Decimal %D10% to 0
Repeat with Variable using %N1%
  Variable Modify Integer: %N3% = %N1% - %N2%
  Variable Modify String: Copy Part of %T10% to %T1%
  Switch (T1)
    Case: A
      Variable Set Decimal %D1% to 10
    End Case
    Case: B
      Variable Set Decimal %D1% to 11
    End Case
    Case: C
      Variable Set Decimal %D1% to 12
    End Case
    Case: D
      Variable Set Decimal %D1% to 13
    End Case
    Case: E
      Variable Set Decimal %D1% to 14
    End Case
    Case: F
      Variable Set Decimal %D1% to 15
    End Case
    Default Case
      Variable Modify String: Convert %T1% to decimal %D1%
    End Case
  End Switch
  If Variable %N3% = 0
    Variable Modify Decimal: %D10% = %D10% + %D1%
  Else
    Variable Set Decimal %D2% to 1
    Repeat with Variable using %N3%
      Variable Modify Decimal: %D2% = %D2% * 16
    Repeat End
    Variable Modify Decimal: %D3% = %D2% * %D1%
    Variable Modify Decimal: %D10% = %D10% + %D3%
  End If
Repeat End
Pretty intense, huh? Sure, this
takes care of the problem for this macro, but what about the
next macro that needs the same capability? You could, of course,
use copy and paste. However, what if the variables used here
are used for something else in the macro that you are pasting
to? They would all need to be changed. Here's the solution (you
knew it was coming): use our function.
// Convert a
hex string to a decimal value
Variable Set String %T1% "E2B5C6" //
Hexadecimal
Write Registry String: "ParameterString1" //
Pass it
Macro Run: { Math - Hex to Decimal } //
Convert it
Read Registry Decimal: "ReturnDecimal1" //
Read the results, D1 = 14,857,670
See the Macro Run command?
It is calling one of the functions in our library. You set a
value to pass just prior to making the call and then read the
results immediately afterwards. In this case %T1% holds the
hexadecimal string to be converted, and %D1% is used to read
the returned answer. Plain and simple, reusable, and ready-made
for cutting and pasting!
Why They Work
Because we have no clue as to
which variables your functions use, and have no desire to overwrite
them when calling one of ours, we save yours before writing
ours, and then restore them when finished.
Take another look at the above
example. The called { Math - Hex to Decimal } function
also uses the %T1% variable to do its work, however, because
it saves the current set of variables prior to overwriting them
and then restores them at the end, your variables are never
changed.
Functions by Category
|