Project hosted by
Open Source Extended Clipper Language

xHarbour News


xHarbour BETA-1.4 for the different platforms are available for download from the download page now.

Here are some of the fixes, and new features offered by Beta-1.4:

xHarbour Core compiler
  • Fixed space trimming in hb_strncpyUpperTrim() and hb_strncpyTrim() when the given source string was longer then destination buffer and has internal spaces at the destination buffer size

  • Minor updates on processing script file:

    • Compiles long file name inside quotes e.g. "my program ver 1.prg"
    • Compiles more than one file when a line contains more than one input files in a row, separated by white space or a comma
    • Honor comments started with '#' Reminder: script file processing is different with Clipper who processes the listed files into a single object; harbour processes it into individual c outputs

  • Fixed doubly assigned HB_FS_FIRST on starting procedure when there is no prg module in a file

  • Allow static function as application startup unless HB_NO_STATIC_FUNC_START is defined when building the compiler

  • Error trap /* */ now only applicable to pure prg codes

  • char *hb_stripOutComments( char* buffer ), a simple function to extract uncommented contents from (read) buffer

  • Fixed GPF trap in preprocessor

  • Removed '|' '*' '/' '^' '%' and "->" from list of invalid startup tokens for normal Match Marker in the preprocessor Note from our developer "I'm confident this Clipper behavior is a BUG, because valid expressions can never start with any of those tokens, but Clipper itself exploit this behavior in it's implementation of SAVE ALL LIKE * to ..."

  • Preprocessor: Corrected md_strAt() to ignore ',' inside {....}, [...], and (...)

  • Added hack for XCC which solves this problem: LOCAL x:=2, y:=2.000 ? x==y

  • Added detection of empty optional clause and empty repeatable group, and generation of respective compile error in the preprocessor

  • Fix compiling empty segment of #pragma begin/enddump

  • Added support for optional White Space predefined match pattern ?WS?

  • Added support for Delimiters and Self Contained tokens to be matched as literals within compounded words

  • Added optimized compounded words definitions, using new ?WS? matcher, and commented respective match rules

  • Removed no longer needed hack for special tokens FIELD, QSELF, IIF and _GET_ when used as Identifiers, and followed by reserved words

  • Corrected use of if() to IIF() to avoid extraneous translations and generate better readable PPO

  • Added support for IN, HAS, and LIKE as native operators, in getExpReal()

  • Check for HB_DEFAULT_DECIMALS when reducing mult expression and counting decimal places
xHarbour Virtual Machine (VM)
  • Cleaned to generate symbol scope values and fixed problem with calling methods in HRB files

  • Fixed and optimized handling of ErroBlock() reset in CATCH clause

  • Treat one character strings as UNSIGNED numbers

  • Commented active TraceLog()s

  • Fixed the problem with conflict of SYM_ALLOCATED and HB_FS_PCODEFUNC which can cause GPF at runtime

  • We removed all ASM patch from HRB files load and added pCode and symbols structure pointer to symbol.value.pFunPtr

  • Fixed static's initialization to avoid direct pFunPtr() call

  • Added hack in function call and vmSend to check scope for HB_FS_PCODEFUNC and make direct call to hb_vmExecute()

  • Always call static/global initialization just after module is loaded

  • Call init functions in __HRBLOAD(), additional parameters in this function is passed to init funcs

  • Call exit functions before module is unloaded

  • Corrected ProcName() and ProcLine() reporting for messages to non objects type

  • Restored the original behavior of hb_arrayGetDL()

  • Fixed possible memory leak in hb_dynsymNew()

  • Disable the scope checking in hb_dynsymNew()

  • Added hb_itemDoCRef() - it can execute given xHarbour function from C level passing chosen parameters by reference

  • Fixed 2 GPF traps related to calling hb_itemReleaseString() and not resetting ->type member

  • Optimized hb_vmDoBlock() to use in place evaluation instead of calling hb_codeblockEvaluate()

  • Removed not used hb_codeblockEvaluate() for codeblocks

  • New function HB_VMMODE(). Detects optimization on run time

  • New function HB_MULTITHREAD. Detects MT mode on run time

  • Fixed bad typo which could cause double to integer conversion when default number of decimals was set to 0. F.e. after SET FIXED TO 0

  • Commented out handling of EVENT Message for Codeblocks in Classes. Eval as message is handles at the VM level. This fix allows classes to implement an Eval Method

  • Fixed compilation of LOOP statement within SWITCH constructs

  • Fixed double release of an invalid macro in hb_macroCompile()

  • Minor restructure to simplify debuging of rejected, and cloned symbols
xHarbour Run Time Library (RTL)
  • Added GenCode as optional 2nd argument to ErrorNew()

  • Added ProcName and ProcLine as optional additional arguments to ErrorNew()

  • Corrected error reporting of source origination in ::Error() called ::MsgNotFound()

  • Removed unused arguments in ::MsgNotFound()

  • Fixed cell repaint when ::ColorRect() is used in TBRowse.prg

  • Fixed cursor position when it changes but no refresh needed in TEditor.prg

  • Fixed missing assignation for detect array size change

  • Fixed a GPF trap when OLE Server has to reallocate a string argument passed BYREF

  • Check parameter length in STOD function to avoid errors reported by valgrind or similar tools and potential GPF

  • Total rewrite of Win32Ole.prg

  • Fix on transform(100,"9999.")

  • TTopBar.prg : Modal METHOD must always exit its execution when an item executed (Clipper compatible)

  • SET ERRORLOG TO [ERRORFILE] [ADDITIVE] Option to direct error log to designated file name with append option

  • Work around of untransform method for get picture with "@R" in TGet.prg
xHarbour RDD
  • Added hb_rddAllocWorkAreaAlias() function which should be used in RDD instead of calling hb_dynsymGet(),... which was not MT safe and moved the VM/RDD internals to RDD code. This is only partial modification

  • Strip leading spaces from given alias expression and use the same rules for alias IDs as for other symbols (cut at first space)

  • fixed GPF when closing WA without atomAlias set

  • Tag selecting is SIX compatible now. First it was COMIX compatible: for functions which uses , as parameter when was numeric the was always ignore. We where trying to mix it with SIX and support both syntax but it does not make sense and simply reduce the flexibility of using ord*() functions for user. The SIX syntax is much better and the COMIX/CL5.3 is wrong

  • Check in SELF_EVAL() method for hb_vmRequestQuery() to detect 'break/recover' in process

  • Extended field structure for auto increment, nullable and system columns

  • Initial support for encryption

  • Minor modifications in ORDCONDSET()/DBUSEARE()/DBUSEARED() ( DBUSEARED() will be removed soon. )

  • Add table extension (.dbf) in OPEN() method


  • Fixed typo in DBI_FCOUNT

  • Use hb_vmEvalBlockOrMacro() in EVALBLOCK() method - EVALBLOCK() should be able to execute objects produced by COMPILE() method
xHarbour Debugger
  • Save and restore application's libct window coordinates
xHarbour TIP Class oriented Internet protocol library (TIP)
  • Fixed an error of mine inserted into method ::Retrieve() a long time ago causing ::bEof to have a wrong value

  • Fixed data storage (STOR)
xHarbour DBFCDX
  • Many small fixes and improvements like dynamic scopes from code blocks, cleaned scope code - now can be fully controlled by DBOI_* interface so we can free the method used so far - COMIX/CL5.3 compatible order of execution codeblocks in indexing

  • Fixed counting EOF and other "out of scope" records in ordKeyPos()

  • Disable extended filters when indexing with WHILE/REST/USECURRENT flags
xHarbour DBFNTX
  • Nearly all code is rewritten except of indexing. Now DBFNTX supports most of DBFCDX features like dynamic descend flag (ordDescend()) and other ord*() functions (also dynamic scopes as codeblocks), has real seek last, etc. Now DBFNTX is noticeable faster in SHARED mode and network environment
xHarbour DBFDBT
  • Accept not full memo block - it's necessary for Clipper compatibility

xHarbour RDDADS
  • Fixed memo fields conversion for oem char sets

  • Added AdsCacheOpenTables() and AdsCacheOpenCursors() function. (for all versions Ads) and AdsCloseCachedTables() for Ads 7.x and above. ADS_REQUIRE_VERSION 7 must be set for the last function

  • Allow setting of ADS_REQUIRE_VERSION using compiler command line switch

  • Added necessary string conversion for filter expressions and sql statements for console applications, which used oem char set

  • Added second optional parameter in AdsSetCharType() for console mode applications to retrieve character data in the OEM char set: AdsSetCharType( 2, .T. ) call must be used in this case

  • Implemented AdsMgServerType() to determine OS ADS is running on
xHarbour CT3.LIB [ as a separate LIB now ]
  • New functions:

    • KSETINS( lToggle )
    • KSETCAPS( lToggle )
    • KSETNUM( lToggle )
    • KSETSCROLL( lToggle ) These are Windows version, work __ONLY__ with GTWVT/GTWVW/GTALLEG. Parameter: lToggle, logical, .T. to switch on, .F. to switch off

  • Minor fix in volume function

  • GetVolInfo() and VolSerial(): when no drive parameter is passed -> assumed to query current drive

xHarbour WVW.LIB
  • Fix:: gt_Puts(): truncate a too long string in case of MainCoord Mode
© 2024 All rights reserved.
Contact us | Terms of Use Agreement
xHarbour.ORG is maintained by Enrico Maria Giordano
Internet services kindly provided by