[Windows Mobile Software Development] howdykeith:
Command Timeline (Lest we forget)

Red Items are missing from the PDF...

MortScript-4.3b15:

FtpUpload command:

FtpUpload( \^<source file>"", <target file>"", <server>"", [ <user>"" [, <password>"" [, <passive?> [, <port>] ] ] ] )

An abridged view of MortScript 4.3b11 as it pertains to choosing Mortscript commands and their origination to the Mortscript environment. You may need to check the version of your script to make sure it encompasses the commands you need. No reason to force the phone to update Mortscript if it is going to work as is...

MortScript-4.3b14:

On the default value for Choice, make sure you're using the latest beta, that is a bug that has been fixed in one of the releases of B13, as noted here:

Changes:

- removed debug messages on Reset

- ScreenShotClick should work on every platform (except non-touchscreen devices, obviously...)

- MaxIndex ignored empty values in-between

- ReadLine delivered rubbish if last line was not ended with CR

- SleepMessage non-fullscreen. Should still be fullscreen on Smartphones.

MortScript-4.3b13

Bugfix update...

- Choice and SetMessage Font bugs (no idea why it wasn't in last b12 post...)

- SelectDirectory adjusted to PC (didn't work since 4.3b2...)

- Fixed ElementCount and MaxIndex

- Input omits empty message

Version 11 is posted here, this is Mortscript current non beta version.

The Include Command starts at Beta 1.

MortScript 4.3b11

Small update/patch:

- Desktop: fixed file name bug ("file <first letter of filename> not found") and registering a new MortScript.exe location now should work

- Added MortScriptExe(), returns complete path of interpreter (e.g. "\program files\mortscript\mortscript.exe"), so you don't need to fiddle with SystemPath.

- Made 2nd Join parameter optional

- Horizontal scroll bar should appear when entries in Choice or status window require it. At least I told Windows so (necessary window style set).

b11:

- MortScriptExe(), returns complete path of interpreter (e.g. "\program files\mortscript\mortscript.exe"), so you don't need to fiddle with SystemPath.

- Made 2nd Join parameter optional

b10:

- SinH/CosH/TanH (hyberbolic) (ArcSin/-Cos/-Tan already existed, missing in manual)

- Exp(x) (=EULERT^x)

- Join( array, concatenator )

- InArray( array, value )

- optional codepage parameter for all INI functions (incl. ForEach)

- RegWriteExt/RegReadExt (.reg style), RegType

b9:

- Bugfix: MaxIndex returned -1 for empty arrays

- Bugfix: For/Next (wrong internal stack handling)

- Bugfix: allow equal sign in file names (if \ appears first, otherwise hard to separate from var=value parameter).

- Supports for unnamed parameters, which are put to global argc/argv. But only without "/" or "-" at the beginning.

- ToggleWLAN( TRUE/FALSE ), completely untested so far.

b7:

- improved error handling (should fix "Exit" problem of medush, wrong line number, and some other things like "invalid parameter count" after errors in expressions)

- ChoiceDefault fixed (missing last entry)

- better key handling in choice dialog (phew, what a mess to let Windows do that without MFC...)

- ActiveScripts(...), parameters like ProcList

- WriteLine( file, line [,codepage] ) and CloseFile( file ) (both untested so far!). WriteLine writes without closing the file and appends line break itself (faster than Write with append), CloseFile closes files opened by ReadLine or WriteLine

- Fixed bug with empty array in ForEach ... in array(...)

- Fixed nesting bug after "Next"

- Added "Default" for Choice(Default)/Switch structure.

b6:

- New, faster array handling for numerical indexes up to 256. Also increases the limit for Choice etc. to 256 elements.

- Break and Continue, optionally with BLOCK_* to break/continue an other object (e.g. Break( BLOCK_FOR ) in a Switch statement)

- ExitSub( value ) - like Return, but leaves Sub

- Try/Catch/EndTry - Break skips to Catch block, Continue to EndTry. If none of those is invoked, the Catch block is skipped. (It's more like a stuctured On Error Goto, not really an exception handling like in C++ or Java)

- ProcList( [with path? [, search string ] ] ) - array with the currently running processes. Search is case-insensitive and does not regard the path, "with path?" only modifies the result.

- FindWindow( title [, position, case-sensitive?, only app windows?, include invisible?, window class ] ) - looks for the "best fit" window with given properties. All parameters starting from position are optional... "App windows" means windows without parent or the Desktop as parent and some window styles common for "normal" application windows. Position: ANYWHERE = "title" contained anywhere in the title, BEGINNING = title starts with given string,

COMPLETE = entire title given.

- FindWindows( .... ) - Like FindWindow, but returns an array with all fitting windows, and the title is optional (use "" for all windows).

- FindWindow(s) and ActiveWindow now returns a special window variable (VAR_WINDOW) instead of just the name, which allows Send... etc. to work faster because it's not necessary to search a window with a fitting name.

- WndClass( window ) - Class name of a window

- autorun.exe passes parameters to MortScript.exe

b5:

- Bugfix in Sub parameter handling

b4:

- Fix in .ini file parsing (last line wasn't handled correctly if not finished with new line)

- Different argc/argv handling for Subs with named parameters

b3:

- Bugfix for the problems with variable assignments and "wrong" nesting

b2:

- Fixed some parsing problems

Here we receive the Include Command:

b1:

- Comments should work everywhere without troubles, even after lines continued with \ at the end. Comments can be started with #, //, and ;. (The latter was added because I sometimes happen to add a ; at the end of the line, being used to it from C++ and Java...)

- Maybe faster execution, esp. if there are many assignments/function calls

- Subs can get a parameter list after the function name. These are created as local variables and assigned with the parameter values on invocation - or they'll remain empty (IsEmpty) if not enough parameters were passed.

- Subs can be invoked with @function( [parameters] ). So Call is only required for "Reflection", i.e. dynamic invocation of different functions (Call( variable, ... )).

- The same works inside of expressions. Here, the value set with "Return" is, well, returned, or "empty" if nothing is returned.

- If a numerical value is set with Return in the main program (outside of any Sub), this value is used as exit value, so it can be queries with e.g. rc = RunWait( "...\MortScript.exe", "...\script.mscr" ). Or, which usually makes more sense (because in MortScript, using Include and Sub is better), from external programs.