HicEst Windows Programming. Powerfully Simple. Free. |
Integrated development environment with graphical user interface designed for immediate results in the development of Windows applications |
Abstract: Short Summary of HicEst Features |
What does it? For whom is it? Why use it? Areas of its use |
Bookmarks areas_of_use for_whom hello_world simply_start what_it_does why_use_it | Optional keywords |
Newcomer to HicEst? |
Read this if you are not sure about the uses of HicEst. To get answers move the mouse over the questions below |
Examples: 1-liners that can be combined to a script |
All example statements can be executed directly in HicEst. Just paste and copy to a script window. Try and change. Discover ease and power of operation |
Bookmarks barometric_formula basic_examples countdown_timer more_examples rename_photos | Optional keywords |
Debugging: How to check for errors in your script |
The error case is the normal case |
FAQ: Frequently Asked Questions |
There are always some open questions |
HowToStart: First steps in HicEst |
It probably will not take more than 5 minutes to get your first test running |
Bookmarks prefabricated_script | Optional keywords |
BarometricFormula: Shows FUNCTION, AXIS, LINE, ALARM |
Air pressure as a FUNCTION of height over sea level and temperature. AXIS plots (h,p) axes. LINE plots pressure vs height for different temperatures. |
CountDown: Shows Window, Write, Subroutine, Messagebox |
A dialog sets and starts a countdown. Title and taskbar show min:sec. When time is over or a key is pressed, a modal message overlaps all other windows |
Meaningful JPG names: How to change the original names |
JPG names mostly are a few letters and numbes. This script prefixes EXIF times to original names. Rename again in a spreadsheet table. Undo and Redo |
Bookmarks cluster_sorted_table edited_and_2_fields_added matrix_explorer_export original_to_timestamp_serial_original | Optional keywords |
HelpOnHelp: Get Help in HicEst |
Context sensitive F1 explains keywords and functions, variables are shown and can be changed. Tooltips and auto-completion are omni-present. Menu help |
AXIS: Draw 2-Dimensional Axes of Coordinates |
A call to the AXIS function can draw up to 8 systems of axes with settings for color, caption, linear/log, grid, time/date, automatic scroll, no axis |
LINE: Draw Lines and/or Symbols, Contours, Histograms |
Line will draw scatter diagrams, line charts, contour lines, histograms, topographic maps etc. to 1 or more coordinate systems generated by AXIS |
Panel: Easy-Update Screen: Numeric, Text, Graphics |
PaNeL is an optional keyword of HicEst's WINDOW() function. It will exactly display the template defined in the APPENDIX section of the script |
BEEP: System Speaker Beeps and Tunes |
Generate simple beeps or compose tunes as a sequence of multi-frequency tones with varying loudness in mono or stereo. Save as WAV. Play WAV |
Bookmarks compose_tunes generate_simple_tones play_wav_file write_wav_file | Optional keywords |
Circle_of_Fifths: Example of a HicEst Script |
Some HicEst features in a fun example that lets you play the major and minor scales: BEEP, DLG, EDIT, INIT, APPENDIX, WINDOW, SYSTEM, AXIS, WRITE, etc |
COM: COM-Port Serial Communication to Receive and Send |
Set physical COM-port parameters. Send data + checksum. Input: Receive data + checksum. Controls: screen echo, timeout, different waits, error, etc |
Bookmarks debug initialize read write | Optional keywords Bauds CheckSum ChecksumBits ChecksumVal Comport DataBits DouBLe ERror Echo ExitOnInput IgnoreInput Lastchar LastcharX OnErroritem Parity Receive Send StopBits Timeout WaitBIts Waitbyte |
Colors: Color Attributes in HicEst |
Set colors by the RGB function, or by the Backcolor and Forecolor keywords of WRITE, AXIS, LINE, WINDOW, DLG, or in the Decoration or Panel keywords |
Bookmarks color_definition global_color_definition | Optional keywords |
DeCoRation: Geometrical Shapes for Screen or Print |
Decoration patterns are most useful in the WINDOW(Panel) function to separate numbers, texts, graphics |
DLG: Interactive Screen Input and Output with HicEst |
Commands like DLG(Button=my_button, Edit=my_variable, ListBox=my_words, ...) make the use of Windows common dialogs an easy thing |
Fonts: Appearance of Strings on Screen or Print |
A Windows font is a combination of typeface, point size and a few other characteristics. HicEst offers several ways to select a font |
Format: Structure Output Lists |
Format is used in the READ and WRITE functions. For MatrixExplorer also in the DLG, OPEN, SORT functions to display or edit files, arrays or strings |
MatrixExplorer: Spreadsheet-like String, Array, File Dialog |
HicEst MatrixExplorer is an extension of the standard DLG function to display or edit numeric arrays or text strings or any file of known structure |
OPEN a File for Read, Write, Sort, or MatrixExplorer |
To start standard file operations and the spreadsheet-like MatrixExplorer with direct access to ordered and to non standardized files (CSV etc.) |
POP: Create Popup Menu, Immediate or Mouse Activated |
The POP function lets you pop up a menu. A callback subroutine is called in response to a mouse button click, or can also be called script controlled |
Print: Line Printer Output |
PRint is an optional keyword to the AXIS, WRITE, or WINDOW functions. It has no stand-alone meaning |
Bookmarks dialog_box_print print_under_program_control printer_tool printing_geometrical_shapes | Optional keywords |
Quintenzirkel als Beispiel für ein HicEst Script |
Zeigt am Beispiel des Aufbaus von Dur und Moll Tonarten einige HicEst Funktionen: BEEP, DLG, EDIT, INIT, APPENDIX, WINDOW, SYSTEM, AXIS, WRITE, etc. |
READ: Input from Text Strings, Files, Clipboard, and Window |
READ is the companion function to WRITE. Often the FOrmat keyword is needed to interpret the data correctly. Files require a preceding OPEN |
WINDOW: Create, Texts, Graphics, Files, Display-Panels |
Optionally set title, dimension, position, display state, text, menus, toolbar. For texts, file display, graphics, mixed graphic/text life panels etc |
WRITE to String, File, Window, Messagebox, ClipBoard, StatusBar, TitleBar, TaskBar |
How HicEst formats and outputs data, adds color, adds decoration or geometrical shapes, aligns data, selects fonts, renames, closes or deletes files |
Arrays: Vectors and Matrices |
HicEst knows 1- or 2-dimensional rectangular arrays as vectors (1 row, n columns) or m x n matrices. Higher order array can be realized with ALIAS |
ABS: Absolute Value of x |
The absolute value or modulus of a real number x is the non-negative value of x disregarding its sign. |
ACOS(x): Arccosine of x |
ACOS(x) is the inverse trigonometric function of COS(x) |
ASIN(x): Arcsine of x |
ASIN(x) is the inverse trigonometric function of SIN(x) |
ATAN(x): Arctangent of x |
atan(x) is the inverse of tan(x). It is for example the solution of integral( 1/(x2 + 1) ) |
COS(x): Cosine of x |
In a right triangle the cosine of an angle is the ratio of the length of the adjacent side to the length of the hypotenuse |
COSH(x): Hyperbolic Cosine of x |
cosh(x) occurs in the solutions of many linear differential equations like d2y/dx2 = y with c1*sinh(x) + c2*cosh(x) as solution |
DIFFEQ: Solve (Systems of) Differential Equations |
Numeric solution of ordinary (ODE) or parabolic (PDE) differential equations in a 1-line statement with an additional callback subroutine |
EXP(x): Exponential Function |
EXP(1) is 2.71828182845905. The inversion is x = LOG(2.71828182845905) with x = 1. Related are expressions like base**x with base = 10 for example |
INTPOL: Linear, Cubic, Inverse, Derivatives, Integral |
HicEst numeric linear or cubic Akima interpolation of xy data. Roots, Find, 1st and 2nd derivative, integration |
LOG: Logarithm, Optional 2nd Argument is Base |
LOG(x) computes the natural logarithm of x. LOG(x,b) computes the base b logarithm of x. The inverses are EXP(x) and b**x resp |
Bookmarks base_b_logarithm natural_logarithm | Optional keywords |
RAN: Random Number Generation |
Generate Pseudorandom Numbers or an Array of such Numbers. Set a range of sucht numbers. Plant a seed |
Bookmarks array_of_random_numbers generate_pseudorandom_numbers random_number_seed range_of_random_numbers | Optional keywords |
ROOTS: Quadratic Equations and Cubic Equations |
Roots provides algebraic solutions for quadratic and cubic equations |
Bookmarks cubic_equations quadratic_equations | Optional keywords |
SIN(X): Sine of x |
In a right triangle sin is the ratio of the length of the side that is opposite that angle to the length of the longest side of the triangle |
SINH(x): Hyperbolic Sine of x |
sinh(x) occurs in the solutions of many linear differential equations like d2y/dx2 = y with c1*sinh(x) + c2*cosh(x) as solution |
SOLVE: Linear and Nonlinear Equations and Data Fit |
Find roots or minima of nonlinear algebraic equations or perform least-square-fit to data of an overdetermined system (Levenberg-Marquardt) |
SUM: Sum of an Array or String Argument |
Sum of all elements in an entire array, or sum of the ASCII values of all characters in a string. More versatile is the inline-loop construct |
TAN(x): Tangent of x |
In a right triangle the tangent of an angle is the ratio of the length of the opposite side to the length of the adjacent side |
TANH(x): Hyperbolic Tangent of x |
tan(x) occurs in the solutions of many linear differential equations. For example it is one solution of dy/dx = 1 - y*y |
Programming: The Elements of HicEst |
Programming elements like structure, procedures, specifications, expressions, assignments, execution control, loops, jumps, errors, debugging |
Data Types |
Default data type is 8-byte floating point |
FromTo Op ":" Select Subarrays or Substrings |
Operator ":" provides a sub-array, or a sub-string for use in (InlineLoop-) expressions or in MatrixExplorer for partial file matrices |
>< HicEst SWAP operator |
The swap operator swaps the values of the left-hand side and the right hand side |
Bookmarks file_sections | Optional keywords |
$: Index to Facilitate Array and String Operations |
When working with arrays or strings $ is the left-hand side linear array index for InlineLoop use |
Bookmarks block_array factorial_n matrix_to_vector string_index_operations unity_matrix vector_elements | Optional keywords |
$$: Menu, Toolbar, or Popup Button Number |
The global variable returns the clicked menu, toolbar, or popup button number |
$1: Loop Index of an Inline-loop-expression |
$1 is the current inline-loop index used in 1 statement sums or other matrix operations, or string ops like palindrome check |
Bookmarks file_section_inline_loop implicit_index matrix_product matrix_times_matrix text_inline_loop | Optional keywords |
$C: Column Index of left hand side Array |
The global HicEst variable $C is the current column number of a left-hand side matrix and can be used in right-hand side inline-loop operations |
$CMD_LINE: Retrieve the Command Line String |
Global Variable $CMD_LINE has the command line string as reported by Windows when HicEst is started from a command line or from WINDOWS shell command |
Bookmarks set_variables_from_command_line start_in_run_mode | Optional keywords |
$R: Row Index of Left Hand Side Array |
The global HicEst variable $R is the current row number of a left-hand side matrix and can be used in right-hand side inline-loop operations |
Bookmarks running_column_sum | Optional keywords |
$SystemVariables: 10 Predefined Global Variables |
Loop index $, menu item $$, $R, $C left side row, column, inline-loop index $1, carriage return $CR, linefeed $LF, CR+LF $CRLF, tab $TAB, $CMD_LINE |
Bookmarks carriage_return line_feed tabulator | Optional keywords |
ALARM: Asynchronous Procedure Calls |
F2-F9 can be programmed as delayed subroutine calls (script still running). For repetitive actions, reminders, data acquisition. Key also calls F2-F9 |
Bookmarks clear_stack delay_indefinitely delayed_subroutine_call quit_immediately turn_off turn_off_any_pending_alarms wait__for_event | Optional keywords |
ALIAS: Dynamically Redefine Arrays and Strings |
Share memory for strings or arrays to allow named substrings or subarrays, mostly for readability and ease of programming, but also to save memory |
ALLOCATE: Expand Array or String Dimensions |
If memory runs short in running a script, the allocated array or string lengths can be expanded |
Bookmarks dynamically_increase_string_length equivalence increase_array_size named_substrings rename_part_of_an_array reshape_matrix | Optional keywords |
APPENDIX: Store Bulky Data Noncompiled at Script End |
Arrays or strings can be stored in an appendix to the script to restore or alternate data at run time. Work off placeholders with the EDIT function |
Bookmarks appendix_chapters dialogs_and_appendix evaluate_appendix panel_definition read_appendix script_appendix | Optional keywords |
BITS: Handling BITS and BYTES in string and numeric arrays |
Perform operations like set, flip, clear, copy, move, shift, rotate, translate, lows, highs, count bits in groups of rows, columns, boxes, and rings |
Bookmarks | Optional keywords AND BOX Base BitCount BoxDim CLR CoPy EOR ERROR FLiP GetVal High0 High1 IFClr IFEq IFGt IFLOC IFLt IFNeq IFSet JumpBase LocGet Low0 Low1 MoVe OR ORIGin POOL RING ROTate RowsColsBits SHiFt SetBit SetVal X XLate Y |
CALL: Call a SUBROUTINE |
Call transfers control to the 1st statement of a subroutine |
CEILING(x) is the Smallest Integer ≥ x |
Related functions are INT, NINT, FLOOR, ABS, MOD |
CONTINUE: a No-Operation Statement |
Continue with a label is used as the target of an ERROR-exit of any function, as target of a GOTO, instead ENDDO in a labeled DO, or as a place holder |
DATA: Initialize Numeric Entities at Compile Time |
A DATA statement assigns initial values to numeric variables before program execution. Related are the REAL and CHARACTER statements |
DIMENSION: Define a Numeric Array |
The HicEst DIMENSION and REAL statements define the number of numeric array elements |
DLL: Run-Time Dynamic Linking |
Call Windows APIs or own DLLs directly from a HicEst script |
Bookmarks get_memory_status | Optional keywords CHar0P CHarP ERror ErrIf ErrIfNot HINSTance I1 I1P I1U I1UP I2 I2P I2U I2UP I4 I4P I4U I4UP I8P Module Procedure R4 R4P R8P STrucP Unload Wdw1 |
DO: First Statement of a standard Loop |
Start index, end index and step size can be controlled by the loop parameters. This is in contrast to HicEst inline-loops or EDIT-loops |
ELSE: Block of Statements Executed when IF/ELSEIF False |
Part of an IF THEN ELSEIF ELSE ENDIF construct. Follows ELSEIF and precedes ENDIF |
ELSEIF: Statements Executed when foregoing IF False |
Part of an IF ELSEIF ELSE ENDIF construct. if needed follows an IF or other ELSEIF |
END: Terminate the Current Script Procedure |
Ends the main programm. END in a subroutine or a function returns control back to the calling procedure |
ENDDO: Terminate a Loop |
A standard DO loop needs to be terminated by a ENDDO or a labeled CONTINUE. However, inline-loops and EDIT-loops are exited on an error condition |
ENDIF: Terminate an IF THEN ELSEIF ELSE ENDIF construct |
ENDIF must be the last statement in the IF THEN ELSEIF ELSE ENDIF construct |
FLOOR(x) is the Greatest Integer ≤ x |
Related functions are INT, NINT, CEILING, ABS, MOD |
FUNCTION is Invoked in Expression and Returns a Value |
Functions can be called from anywhere in the script. They are locally encapsulated, or they can share some or all variables with other procedures |
FUZ: Fuzzy Logic Fuzzification and Defuzzification |
Fuzzy control or decisions based on empirical rules can be an interesting alternative when a mathematical model does not exist or is too complex |
Bookmarks defuzzification fuzzification fuzzy_expert_system inferences | Optional keywords |
GOTO: Jump to a Label |
GOTO label transfers control to a labeled target statement. Note that the GOTO statement is frowned upon, but it can still sometimes be useful |
IAND: Bitwise Logical AND |
The AND function is used to set the result bit when both bits of its 2 arguments are set, otherwise the bit is zero |
Bookmarks clear_bit_n logically_and_bits test_bit_n | Optional keywords |
IEOR: Bitwise Logical Exclusive OR |
The exclusive IEOR function is used to set the result bit when the bits of its 2 arguments are different, otherwise the bit is zero |
Bookmarks bitwise_either-or | Optional keywords |
IF: Start a Conditionally Executed Statement |
Conditionally executes a group of statements, depending on the value of an expression |
Bookmarks conditional_execution | Optional keywords |
INDEX of Text in String or File Column, Number in Array |
Optionally with case, word, backward, scan, nearest, verify, regex, count, sorted, and scalar in a file-matrix column |
Inline-Loops for Efficient Array or String Operations |
Left-hand indexes $, $R, $C and right hand inline-loop index $1 can additionally control file sections, binomials, matrix products, concatenations, etc |
Bookmarks binomial_coefficients factorial file_section_inline_loop hilbert_matrix matrix_product n_choose_k string_inline_loop trace | Optional keywords |
INIT: Dynamically Initialize Data from String |
Initialize strings, variables, array elements, and arrays to free the script from lengthy initializations |
Bookmarks continuation_lines | Optional keywords |
INT(x): Convert x to Next Integer Equal or Below |
Related functions are NINT, FLOOR, CEILING, ABS, MOD |
IOR: Bitwise Logical OR |
The inclusive IOR function is used to set the result bit when either one bit of its 2 arguments is set |
Bookmarks set_bit | Optional keywords |
KEY: Mouse Input, Shift Status, Scancode |
HicEst function to asynchronously monitor keyboard or mouse activities to control the running script execution |
LOCK Keyboard to Prevent Interference at Run-Time |
The LOCK function locks the keyboard while the script is running. It unlocks when the locking key is hit on the keyboard. Useful in Process Control |
MAX: Maximum of Scalar Arguments, or of an Array |
The MAX function finds the maximum value of an array, while MAXLOC finds its position |
Bookmarks maximum_value | Optional keywords |
MAXLOC: Location of Maximum Value in an Array |
The MAXLOC function finds the linear maximum value element position of an array, while MAX finds the maximum value |
Bookmarks maximum_value_location | Optional keywords |
MIN: Minimum Value of Scalar Arguments, or of an Array |
The MIN function finds the minimum value of an array, while MINLOC finds its position |
Bookmarks minimum_value | Optional keywords |
MINLOC: Location of Minimum Value in an Array |
The MINLOC function finds the linear minimum value element position of an array, while MIN finds the minimum value |
Bookmarks minimum_value_location | Optional keywords |
MOD(x,y): Remainder of x Divided by y |
Related functions are INT, NINT, FLOOR, CEILING, ABS |
Bookmarks remainder | Optional keywords |
NINT(x): Convert x to Nearest Integer |
Related functions are INT, FLOOR, CEILING, ABS, MOD |
NOT: Bitwise Logical Compliment |
The NOT function is used to toggle the specified bits of its argument |
Bookmarks toggle_bits | Optional keywords |
Optional Function Arguments (Keywords) in HicEst |
The syntax of HicEst functions with optional arguments is described along with the argument data type used in this documentation |
Bookmarks improve_readability | Optional keywords |
REAL: Define Symbolic Names to be of Real Data Type |
REAL defines scalars and arrays and allows to initialize scalars. Related are the CHARACTER and DATA statements |
RETURN: Exit Subroutine or Function prior to END |
RETURN transfers control from a subprogram back to the calling program unit |
RGB: Red Green Blue Composite Colors |
RGB(red, green, blue) builds a color value from its primary components ranging between 0 and 255 |
Bookmarks predefined_color | Optional keywords |
SIGN(x,y): Absolute of x Times Sign of y |
The result is ABS(x) if y ≥ 0 and -ABS(x) if y < 0 |
SORT Vectors, or Numeric-Text Mixed Matrix Files |
How to index sort, rank sort, and cluster sort vectors or mixed numeric-text files. Also Standard and Cluster sorts in MatrixExplorer are described |
STRUCT: Data structure mostly for use with DLLs |
To define, set the order and data type of structure members, and to initialize a structure of integers, floating point numbers, and other structures. |
Bookmarks define_4_member_struct define_struct_of_structs display_structure | Optional keywords Bytes CHar CHar0 CHar0P CHarP GetPage I1 I1P I1U I1UP I2 I2P I2U I2UP I4 I4P I4U I4UP I8 I8P R4 R4P R8 R8P STruc STrucP SetPage |
SUBROUTINE: Initial Statement of Subroutine subprogram |
Subroutines can be called from anywhere in the script. They are locally encapsulated, or they can share some or all variables with other procedures |
SYSTEM: Calls to the Windows Operating System |
Many types of file listings. Directory commands. Copy, Delete. Wait. Window sizes. Fonts. Shell calls: browser, mail client, explorer, CMD, etc. |
TIME and Date: Set and Convert. Calendar Functions |
Get current time, CPUtime, date, day of the week. Format can be Excel, Gregorian, sec, min, hour, day, month, year, century, YYYYMMDDHHmmSS.sss |
Bookmarks display_elapsed_cpu_times measure_cpu_time | Optional keywords Day Excel Gregorian Hour MInute MOnth MSec Sec TO WeekDay YYYYMMDD Year |
THEN: Terminates a Block IF or ELSEIF Statement Line |
IF( expression1 ) THEN or ELSEIF( expression2 ) THEN are parts of an IF THEN ELSEIF ELSE ENDIF construct |
USE Variables in Local Procedure from other Modules |
USE gives a SUBROUTINE or FUNCTION accessibility to variables in another SUBROUTINE or FUNCTION or in the main section of the script |
XEQ: Compile and Execute a Character String |
This allows to execute an interactively built character string under script control. Currently available variables can be used and changed this way |
Strings in HicEst |
String operations like definition, assign, swap, indexing, substring, space controlled join, conversion, searching, editing, inline-loop, query |
CHAR: Character from Position in ASCII Character Set |
CHAR(i) is the character at the ASCII position i. CHAR also serves to divide a linear string in substrings of equal length in 1 or 2 dimensions |
Bookmarks array_of_substrings null_character | Optional keywords |
CHARACTER: Specify and Initialize Character Strings |
A character string is a contiguous sequence of bytes in memory. It must be specified before it is used in the script |
Bookmarks defining_a_string dynamically_change_string_length rename_or_shrink_a_string string_delimiters substring_definitions | Optional keywords |
EDIT: Lots of String Operations in one Single Statement |
For strings as long as Shakespeares Complete Works do case changes, searches, replaces, counts, parses, extracts, sorts, lexicons, inverted indexes |
ICHAR(c): Index of c in the ASCII Table |
The result is the position of the 1-byte character c in the ASCII character set |
InvertedIndex: EDIT Keyword to Map Words to Data Base |
The EDIT-InvertedIndex keyword maps words or phrases of one or more text files to a common data base for multi-word searches. Alternatively see Lexicon |
InvertedIndexQuery: Query an existing Inverted Index |
A left hand side argument to HicEsts EDIT function with the keyword InvertedIndex=existing_index will be assigned the queried text or numeric result |
Details of the EDIT-function Inverted Index structure |
How to extract data from the inverted index structure |
Join: Space Controlled Catenate of 2 Strings |
The ampersand operator serves to join 2 strings with a controllable number of spaces in between. The // operator simply concatenates 2 strings |
Bookmarks concatenation join mixed_type | Optional keywords |
LEN: Length of a Character String or of an Array |
The result of LEN(x) is the number of bytes in string x, or the number of elements in the array x |
Bookmarks length_of_a_string number_of_array_elements | Optional keywords |
LEN_TRIM: Trimmed Length of string or Array |
It is the length of a string without counting trailing blanks or of an array without counting trailing zeros |
Lexicon: an EDIT Keyword to Build a Lexical Data Base |
As all HicEst functions EDIT(...Lexicon...) is a single line statement. It extracts, queries, and marks a lexical string from an arbitrary text |
Bookmarks num_query query_lex_and_mark regular_expression_lexical_queries set_lexicon text_query vec_query | Optional keywords LeXicon Marks |
TRIM: Strip a Character String of Trailing Blanks |
Related functions are LEN and LEN_TRIM |
Impressum |
Who and Where |
Download HicEst |
HicEst is free. It contains no ads and it does not spy on you. If you like it you are welcome to make a donation though |
Donate to Support HicEst |
Thank you very much for your help |
HicEst Revision History |
Hopefully all revisions made it to the documentation. |