Harbour Source Formatter 3.2.0dev (Rev. 18770)

Copyright (c) 2009-2012, Alexander S.Kresin


Syntax:  hbformat [options] [@config] <file[s]>


# $Id: hbformat.ini 18847 2013-02-13 22:33:19Z vszakats $

# Eol: -1 - no change, 0 - OS default, 1 - DOS, 2 - UNIX
#nEol = -1

# If true, convert file name to lower case
#lFCaseLow = no

# If yes, converts all tabs to spaces
#lNoTabs = yes

# If yes, indent code
#lIndent = yes

# If yes, make case conversion
#lCase = yes

# If yes, reformat spaces
#lSpaces = yes

# If yes, indent "Function", "Procedure", "Class", "Method"
#lIndFunc = no

# If yes, indent "Local", "Private", etc. in a function beginning
#lIndVar = yes

# If yes, indent directives
#lIndDrt = no

# If yes, indent "Return"
#lIndRet = yes

# Leftmost indent - amount of spaces
#nIndLeft = 3

# indent - amount of spaces
#nIndNext = 3

# Indent for continuation ( after ';' ) lines - amount of spaces
#nIndCont = 3

# If yes, convert asterisk '*' to '//'
#lCnvAst = yes

# If yes, convert '&&' to '//'
#lCnvAmp = yes

# Number of spaces after /* and // comments ( -1 - no change )
#nSpaceComment = 1

# If yes, convert .NOT. TO !
#lCnvNot = yes

# Case of commands ( -1 - no change, 1 - upper, 2 - lower, 3 - title )
#nCaseCmd = 1

# Case of boolean operators ( -1 - no change, 1 - upper, 2 - lower, 3 - title )
#nCaseBoo = 1

# Case of functions ( -1 - no change, 1 - upper, 2 - lower, 3 - title, 4 - as in pattern )
#nCaseFnc = 4

# Case of functions ( -1 - no change, 1 - upper, 2 - lower, 3 - title )
#nCaseUnk = -1

# Case of directives ( -1 - no change, 1 - upper, 2 - lower, 3 - title )
#nCaseDrt = 2

# Number of spaces after # in directives ( -1 - no change )
#nSpaceDrt = 0

# -1 - no change, 1 - insert empty line before a function ( procedure,class ) declaration, 2 - remove it
#nLineFnc = 1

# -1 - no change, 1 - insert empty line before return, 2 - remove it
#nLineRet = 1

# -1 - no change, 1 - insert empty line before variables declaration, 2 - remove it
#nLineVar = 1

# -1 - no change, 1 - insert empty line before code in function, 2 - remove it
#nLineCode = 1

# Max level of nesting in brackets, while space is added after a comma
#nBr4Comma = 1

# Max level of nesting in brackets, while space is added after/before a bracket
#nBr4Brac = 2

# Extension for a formatted file ( if empty - replace original )
#cExtSave =

# Extension for a backup file
#cExtBack = bak

# List of space separated .hbx files for specifying proper casing of function names
#cHBXList =



Harbour 3.2.0dev (Rev. 18805)
Copyright (c) 1999-2013, http://harbour-project.org/
Syntax:  c:\harbour\bin\harbour.exe <file[s][.prg]|@file> [options]
Options:  /a               automatic memvar declaration
          /b               debug info
          /build           display detailed version info
          /credits         display credits
          /d<id>[=<val>]   #define <id>
          /es[<level>]     set exit severity
          /fn[:[l|u]|-]    set filename casing (l=lower u=upper)
          /fd[:[l|u]|-]    set directory casing (l=lower u=upper)
          /fp[:<char>]     set path separator
          /fs[-]           turn filename space trimming on or off (default)
          /g<type>         output type generated is <type> (see below)
          /gc[<type>]      output type: C source (.c) (default)
                           <type>: 0=compact (default) 1=normal 2=verbose
                                   3=generate real C code
          /gh              output type: Harbour Portable Object (.hrb)
          /gd[.<destext>]  generate dependencies list into (.d) file
          /ge[<mode>]      error output <mode>: 0=Clipper (default)
                                                1=IDE friendly
          /i<path>         #include file search path
          /i[-|+]          disable/enable support for INCLUDE envvar
          /j[<file>]       generate i18n gettext file (.pot)
          /k               compilation mode (type -k? for more data)
          /l               suppress line number information
          /m               compile module only
          /n[<type>]       no implicit starting procedure
                           <type>: 0=no implicit starting procedure
                                   1=no starting procedure at all
                                   2=add starting procedure if necessary
          /o<path>         object file drive and/or path
          /p[<path>]       generate pre-processed output (.ppo) file
          /p+              generate pre-processor trace (.ppt) file
          /q               quiet
          /q0              quiet and don't display program header
          /q2              disable all output messages
          /r:<max>         set maximum number of preprocessor iterations
          /s[m]            syntax check only [minimal for dependencies  
          /u[<file>]       use command def set in <file> (or none)
          /u+<file>        add command def set from <file>
          /undef:<id>      #undef <id>
          /v               variables are assumed M->
          /w[<level>]      set warning level number (0..3, default 1)
          /x[<prefix>]     set symbol init function name prefix (for .c
          /z               suppress shortcutting (.and. & .or.)
          @<file>          compile list of modules in <file>

Note : After HbMk2, direct use of Harbour.exe not required.


Clipper Utilities

We have tons of shareware utility program and samples written in language and / or for Clipper language.

And tons of them was compiled and published in the legendary internet site by sainted legendary community guru Phil Barnet (RIP). After Phil, this site cloned by Harbour gurus, many thanks to them.

Of course most of that materials are obsolete. But some of them are ageless.

As an example: Click! is a Clipper language source code reformatter. This is much more than a simple reindenter, but actually reestablishes spacing between elements in the lines of code and creates function cross reference charts. Fully documented and configurable.

Viva Clipper 😀


HMG 3.4.3 Released

HMG 3.4.3
Post by Rathinagiri » 08 May 2016 15:41

I am profoundly happy and proud to announce our new version 3.4.3. This version is possible with the untiring efforts of our Dr. Claudio Soto. There are so many new features introduced in this version (especially in GridInPlaceEdit).

You can download this latest version from here (64 MB)

For 64 Bit developers, you have to download and install Harbour64 and MingW64 from here (15 MB) and here (71 MB) respecitvely.

Click here for read this post in place.

Change Log from the last version:

  • – Updated MinGW C compiler (32 and 64-bit) to version 5.3.0 (release december 2015)
    – Updated Harbour 64-bit compiler to version nightly 2016-04-20
    – Updated Harbour compiler to version nightly 2016-05-07
    – New HMG_IsWin64(), returns TRUE if OS is of 64-bit (contrib by BPD2000)
    – New HFCL functions for RichEditBox (contrib by Kevin Carmody):
    – RichEditBox_LoadFileEx, RichEditBox_SaveFileEx
    – RichEditBox_HasNonAsciiChars, RichEditBox_HasNonAnsiChars
    – GetRichEditFileType, HMG_UTF16ByteSwap
    – see \SAMPLES\HFCL\WordScribe
    – New Numeric TextBox support comma ( , ) as decimal separator (contrib by Marek)
    – New Draw GRAPH in Bitmap (contrib by S. Rathinagiri):
    – see documentation and demo \SAMPLES\Controls\Graph\GRAPH_Bitmap
    – Note: It is highly recommended to use Graph Bitmap instead of Graph Command because the      painting is much more efficient and does not produce flicker
    – New internal C function: HMG_Trace()
    – New function GetBinaryType ( cApplicationName ) –> nBinaryType (constants are defined in    i_controlmisc.ch)
    – SCS_32BIT_BINARY // A 32-bit Windows-based application
    – SCS_64BIT_BINARY // A 64-bit Windows-based application.
    – SCS_DOS_BINARY // An MS-DOS – based application
    – SCS_OS216_BINARY // A 16-bit OS/2-based application
    – SCS_PIF_BINARY // A PIF file that executes an MS-DOS – based application
    – SCS_POSIX_BINARY // A POSIX – based application
    – SCS_WOW_BINARY // A 16-bit Windows-based application
    – Bos Taurus: new version 1.0.6
    – New functions(see doc):
    – BT_DrawTextEx (hDC, Row, Col, Width, Height, cText, cFontName, nFontSize, aFontColor,        aBackColor, nTypeText, nAlingText, nOrientation)
    – BT_DrawTextSize (hDC, cText, cFontName, nFontSize, nTypeText) –> { nTextWidth,                  nTextHeight, A+B+C of first character, A, B, C }
    – BT_DrawPolygon (hDC, aPointY, aPointX, aColorRGBLine, nWidthLine)
    – BT_DrawPolyBezier (hDC, aPointY, aPointX, aColorRGBLine, nWidthLine)
    – BT_DrawArc (hDC, Row1, Col1, Row2, Col2, RowStartArc, ColStartArc, RowEndArc,                      ColEndArc, aColorRGBLine, nWidthLine)
    – BT_DrawChord (hDC, Row1, Col1, Row2, Col2, RowStartArc, ColStartArc, RowEndArc,               ColEndArc, aColorRGBLine, nWidthLine, aColorRGBFill)
    – BT_DrawPie (hDC, Row1, Col1, Row2, Col2, RowStartArc, ColStartArc, RowEndArc,                     ColEndArc, aColorRGBLine, nWidthLine, aColorRGBFill)
    – New: now in Label control is possible to assign any data type or a list of data, e.g.
    – @ … LABEL … VALUE xDataType
    – Form.Label.Value := xDataType
    – Form.Label.Value := { xDataType, xDataType, … }
    – New property HBITMAP in IMAGE control (set/get hBitmap into Image control)
    – New in GRID control:
    – now when loads a Grid control and column control is NIL converts automatically any data type   in text, this avoids that column appears empty.
    – On InplaceEditEvent <OnInplaceEditEventProcedure>
    – Properties Available For OnInplaceEditEvent Procedure:
    – This.IsInplaceEditEventInit: Return .T. or .F.
    – This.IsInplaceEditEventRun: Return .T. or .F.
    – This.IsInplaceEditEventFinish: Return .T. or .F.
    – This.InplaceEditGridName: eg. “Grid_1”
    – This.InplaceEditParentName: eg. “Form_1”
    – This.InplaceEditControlHandle: Handle of InplaceEdit ColumnControl, eg. Handle of TEXTBOX, DATEPICKER, TIMEPICKER, COMBOBOX, SPINNER, CHECKBOX, etc.
    – This.InplaceEditControlIndex: Return nControlIndex
    – Now ON CLICK and ON KEY event of Gid control is available too in InplaceEdit state,
    for check if the event is fired in the Grid control or inside of InplaceEdit control you use the property This.IsInplaceEditEventRun
    – see SAMPLES\Controls\Grid\GridInplaceEditEvent
    – Documented in –> Advanced –> Memory, Processes and Threads
    – New RELEASE MEMORY, release unused memory (leak memory), test for example:
    – New HMG_GetObjectCount( [ nProcessId ] )
    – returns an array of 3 items with information about the number of system objects used for a process { nGDIObjects, nUserObjects, nKernelObjects }
    – Documented many undocumented functions
    – New: CREATE EVENT CODEBLOCK bCodeBlock [ HWND hWnd ] [ MSG nMsg ] [ STOREINDEX nIndex ]
    – New: HMG_PressKey( nVK1, nVK2, … ) –> return array { nVK1, nVK2, … }
    – Simulates the pressure of a key or a combination of keys (where nVK is a virtual key code)
    – New in HMG Debugger (see doc):
    – New hotkeys
    – Now you can switch between the ToolBar and the Main Menu at your convenience
    – Fixed minor bugs
    – added in dbgGUI.prg DoEvents() into large FOR-NEXT cycles
    – added a waiting message while the program loads
    – For a defensive programming (minimization of input errors)
    – New Class HMG_TString:
    – This class selects automatically the correct ANSI or Unicode string function depending of current code page,
    the use of this class create a more portable your code.
    – for default HMG a create instance of this class, you call with a pseudovariable oString (e.g. oString.Upper( cText ) )
    – create a new instance of class -> oStr := HMG_TStringNew(), use e.g. oStr.Upper( cText )
    – see documentation( DOC –> CLASSES –> HMG_TString )
    – New: CHECK TYPE [ SOFT ] <var1> AS <type1> [ , <var2> AS <type2> [, <varN> AS <typeN> ] ]
    <var> = var name
    – see documentation( DOC –> Advanced –> CHECK TYPE )
    – New IDE ver 1.1
    – now the IDE not convert to lowercase the name of the PRG files
    – eliminated the maximum limit of 10000 milliseconds in the Timer control imposed for the IDE
    – Zero value in MAXLENGTH property of the controls RichEdit, TextBox and EditBox is equal a NIL value
    – now double click on the Run or Debug buttons not abort the IDE
    – Fixed bug in SetGridQueryData() in Win XP (reported by Eduardo Luis)
    – Fixed bug in TrackPopupMenu() (reported by Esgici and Mustafa)
    – Fixed bug in Transparent Label (reported by Emzampi)
    – Fixed bug in Transparent property of BT_DrawText() function (reported by Andres Gonzales)
    – Fixed bug in DynamicBackColor and DynamicForeColor of the Grid control when used with database (reported by Luis Vasquez)
    – Fixed bug in Set/Get Image in column one of Grid control (introduced in HMG.3.4.1) (reported by Zoltan Miszler)
    – Fixed bug in OnCheckBoxClicked of Grid control (reported by Rathinagiri)
    – Fixed bug in Picture property of ToolBar Button (reported by Pablo César)
    – Fixed bug in updating the Value property when an item is deleted in the Grid control (reported by TopsMarc)
    – Fixed bug in updating record pointer in database in the Grid control (reported by TopsMarc)
    – Fixed bug in Hotkey Alt+S and Alt+U of the Grid control (reported by PiotrM)
    – Fixed bug in ToolTip CustomDraw (reported by Eduardo Luis and Kevin Carmody)

East or West HMG is the Best.
South or North HMG is worth.

…the possibilities are endless.