Project hosted by
Open Source Extended Clipper Language

xHarbour News


xHarbour BETA-1.6 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.6:

xHarbour Core compiler
  • Generate a line number PCODE for WITH OBJECT line
  • Added logic to NOT pass BYREF variables which are declared as FIELD into DO ... WITH ...
  • Emit warning and error messages to stderr instead of stdout
  • Added missing support for <> operator
  • Added missing support [-|+] optional repeatable number prefix
  • Synched support of FIELD-> and _FIELD-> with harbour.slx
  • Added ANSI 170 and 176 chars to portuguese codepage table
  • Added ASCII 166 and 167 chars to portuguese codepage table
  • Fixed HB_SET_COUNT in Include/ to be 20 instead of 15.
  • New Object engine.
  • Added generic optimization:
    x := x + y -> x += y
    x := y + x -> x += y
    x := x - y -> x -= y
    x := y - x -> x += -y
    Due to subsequent optimization of LOCAL += INT and LOCAL -= INT this results in significant optimization of code like:
    LOCAL n1 := 1
    n1 := n1 + 2
    n1 := 2 + n1
    n1 := ( n1 + 3 )
    n1 := ( ( 4 - (n1) ) )
  • Improved verbosity of HB_P_LOCALNEARADDINT.
  • Optimized hb_compExprUseOperEq() to use new HB_P_LOCALNEARADD for HB_P_PLUS if not optimized using HB_P_LOCALNEARADDINT.
  • Optimized hb_compExprPushOperEq() to use new HB_P_LOCALNEARADD for HB_P_PLUS if not optimized using HB_P_LOCALNEARADDINT.
  • Added support for new generic HB_P_LOCALNEARADD.
  • Fixed gpf trap related to LOOP control variable optimized in hb_compExprUseAssign().
  • Corrected right hand optimization of negtive values into +=.
  • Rewrote (and optimized) _Get_ to use LValue.
  • Added HB_EXPORT to hb_codeblockMacroNew() definition and declaration. This change is required to access this function from outside of harbour.dll.
  • Added default OPEN() method, it should be called by RDD as super method from OPEN() on success (Clipper compatible).
  • Added default CREATE() method (as above).
  • Added RDDINFO() method.
  • Added TRANSREC() method.
  • Modified to keep compatibility with base RDD modifications.
  • Added ulConnection member to DBOPENINFO structure.
  • Changed LONG lStartRecno, lRecno to PHB_ITEM itmStartRecID, itmRecID in DBORDERCONDINFO for full RecID support.
  • Added fScoped, fCompound, fUseFilter, fTemporary, fExclusive members to DBORDERCONDINFO structure.
  • Added lpvCargo to DBFILTERINFO structure.
  • Changed non WA methods' (RDDNODE methods) type definitions from DBENTRYP_I[0-2] to DBENTRYP_R*.
  • Added RDDNODE parameter to non WA methods.
  • Added hb_rddGetNode( USHORT uiNode ) function.
  • Added FXO_UNIQUE (Clipper compatible), FXO_SHARELOCK (emulate DOS SH_DENY* mode in POSIX OS) and FXO_COPYNAME (copy final szPath into pFilename in hb_fsExtOpen to reduce overhead in xHarbour error system in comparison to Clipper static one).
  • Added HB_USE_SHARELOCKS[_OFF]/HB_SHARELOCK_POS/HB_SHARELOCK_SIZE macros to control DOS SH_DENY* mode emulation in POSIX systems.
  • Fixed possible GPF in double close international out file.
  • Added DBI_RM_HANDLE.
  • Added hb_clsClassH() declaration.
  • Fixed HB_DBL2ORD() macro for -0.0 IEEE754 double conversion to index key.
  • Added {SELF|SUPER}_LOCATE( AREAP, BOOL fContinue ) for LOCATE/CONTINUE implementation on RDD level - it allows to speedup these operation by RDD and resolve the problem with external FOUND flag update.
  • Changed {SELF|SUPER}_UNLOCK( AREAP, ULONG ) to {SELF|SUPER}_UNLOCK( AREAP, PHB_ITEM ) - CL5.3 compatible in hbapirdd.h.
  • Added fBackword and fOptimized fields to DBSCOPEINFO for RDDs which may want to mark optimization status.
  • Added fOptimized to DBFILTERINFO (as above).
  • Added PHB_ITEM abBlock to DBEVALINFO for RDD.
  • Fixed path specification to be linux compatible.
  • Fixed generating symbol table when static function has the same name as memvar.
  • Added prototypes for some basic xHarbour RegEx API to hbregex.h.
  • Added HB_UNSHARE_REFERENCES macro - disabled by default.
  • Removed HB_SET_DBFLOCK_* definitions.
  • Added hb_vmPushItemRef() function.
  • Added support for "+" sign on /u compiler switch. It loads the specified file in addition to the precompiled command rules.
  • Added methods setcookies and getcookies.
  • Added method readall().
  • Added Xbase++ compatability: METHOD <!ClassName!>:<MethodName> => METHOD <MethodName> CLASS <ClassName>.
  • Corrected to use return value of :ConstructorCall()
  • Added EG_BADSELF -> "Invalid self" error in source/lang/msg*.c
  • hb_gtWriteAt() definition updated for BOOL bSetPos
  • Added hb_strndup() and hb_strnlen()
  • prototype for HB_EVALSCOPE_FUNC moved from hbapirdd.h to make
    it common also for other RDDs
  • Added some missing error codes in HBDBFErr.h
  • Prototype for HB_EVALSCOPE_FUNC moved from hbrddcdx.h to make
    it common also for other RDDs.
  • Added HB_FORCE_IEEE754_DOUBLE macro which force to store double
    value not in platform native form but always as IEEE754 in PCODE and
  • Added missing macros for non GCC compilers for double conversions
  • Added hb_strndup() and hb_strnlen() functions. They works just like GCC
    ones and greatly simplify operation on possible un terminated strings
  • Added hb_put_ieee754() and hb_get_ieee754() functions. They store/retrieve
    IEEE754 little endian double values on any machine type even if they have
    different native double representations. These functions can be used on
    such platforms to keep strict binary compatibility (f.e. when
    databases/indexes are shared between different systems or user wants to
    use common .hrb files.
  • Added hb_put_ord_ieee754() and hb_get_ord_ieee754() - they store/retrieve
    modified IEEE754 double values used by some index formats like CDX and
    NSX - they are also platform independent and will work even if natively
    different double format is used.
  • Added hb_get_rev_double()/hb_get_std_double() for machines with strict
    alignment when C compilers does not support C extension used in GCC macros.
  • Added hb_get_le_int64(), hb_get_le_uint64(), hb_put_le_uint64() for compilation
    with HB_LONG_LONG_OFF - these functions store/ retrieve 64bit integer
    values converting them from/to double.
  • Fixed hb_compExprListStrip() to be right recursive.
xHarbour Virtual Machine (VM)
  • Fixed a typo which resulted in misparsing of .AND. and .NOT. operators
  • Added hb_dynsymSymbol()
  • Fixed string comparision with SET EXACT ON
  • Fixed internal error when C code calls the error system after a pending request from prior error
  • THROW() function can now be overloaded in xbScript.
  • Added overloading of :ClassName when native type is overloaded.
  • Added support for overloading of == operator.
  • Added support for HB_CLASS_OP_EXACTEQUAL -> "OpExactEqual".
  • Fixed GPF Trap in hb_vmInit().
  • Fixed GPF Trap in hb_dynsymGet().
  • Optimized hb_vmBreak().
  • Fixed compilation for MT mode.
  • Renamed hb_stack to hb_stackST in ST compilation so a link error is forced if an application attempts to link both ST and MT compiled modules.
  • Cleaned MT initialization code.
  • FM module can now work without MT initialization.
  • Changed hb_stack in MT mode to hb_stackMT.
  • Removed redundant hb_GetStack().
  • Removed discouraged HB_ITEM[UN]LOCK() macros.
  • Replaced SYNCH of HB_THREAD_SUPPORT with Warning and Error when conflicts with MT mode of compiler.
  • Added HB_TYPE declaration for HB_ITEM type.
  • Type of HB_ITEM changed from USHORT to HB_ITEM.
  • GCC warnings cleanup.
  • Cleaned DLL declaration for extended API.
  • Fixed memory leak in hb_retclenAdoptRawStatic() exploited by disabling API macros.
  • Removed no longer needed defines.
  • Fixed GPF Trap in hb_vmQuit().
  • Restored HB_P_*ADDINT hb_vmPlus(), hb_vmMinus(), hb_vmInc(), hb_vmDec() to return number when char subtype used in numeric context.
  • Fixed parsing of logical constants in expressions.
  • Changed bit shift operations to work on HB_LONG type not LONG only.
  • Fixed HVM stack corruption in HB_P_LOCALNEARADDINT and result substitution by error handlerliminate C stack level in HB_P_INC by reducing redundant code.
  • Fixed HVM stack corruption in HB_P_LOCALNEARSETSTR and HB_P_LOCALNEARSETSTRHIDDEN with __OPASSIGN operator is overloaded.
  • Fixed memory leak in HB_P_ADDINT, HB_P_SWITCHCASE, HB_P_LEFT and RT error with substitution.
  • Fixed stack cleaning in HB_P_POPGLOBAL and __OPASSIGN operator.
  • Fixed memory leak hb_vmSelectWorkarea() and RT error with substitution.
  • Fixed possible GPF in hb_vmDebuggerEndProc() and .prg level debuger HB_VM_STACK.
  • Fixed memory leak and error substitution hb_vmPushAliasedField().
  • Restored valid code of RT errors disabled to reduced number of hbtest warnings when in fact the problem is in hbtest which was hacked much earlier to hide this errors.
  • Changed cScope in FUNCTION and COMSYMBOL structures from char to HB_SYMBOLSCOPE.
  • Renamed HB_PVALUE() to PVALUE() and added an optional XBase++-compatible second parameter.
  • Fixed some memory leaks.
  • Fixed recurse debugger calls when calling a function with debug info from within the debugger.
  • Replaced all direct string item manipulation to utilize API.
  • Added memeber "ULONG allocated" to asString structure.
  • Added HB_STRING_ALLOC( pItem, len ) and HB_STRING_REALLOC( pItem, len ).
  • Centralized string allocation logic by means of above 2 macros.
  • Minor cleanup for compilers which does not allow undefined macros in #if comparison.
  • Removed HB_THREAD_STUB form some hb_stack*() macros.
  • Added protection against overlapping buffers in hb_itemPutC() and hb_itemPutCL().
  • Removed hb_filecase() and hb_fileTrim() functions, all conversions should be done by hb_fileNameConv().
  • Changed HB_DRIVE_LENGTH_MAX to HB_MAX_DRIVE_LENGTH to be compilant with HB_MAX_FILE_EXT.
  • Added HB_P_PLUS support to Strings and HAshes in hb_vmPop().
  • Fixed hb_itemUnShare().
  • Changed hb_retc*() functions to use hb_itemPutC*() to not replicate the same code.
  • Added error generation on read failure in memvars.c.
  • Added missing reset of pItem->item.asString.value[ulLen] to '\0' in hb_itemPutC[L]().
  • Added hb_itemClone() function.
  • Removed repeated hb_itemClone() function.
  • Added left class operations optimization in hb_itemPutC[L]().
  • Modified main VM loop to reduce one comparison repeated in each loop it increase PCODE evaluation speed about 2-3%
  • Added much stronger balancing on index updated controlled by HB_NTX_STRONG_BALANCE macro.
  • Enhanced HB_SaveBlock() & HB_RestoreBlock() to support macro compiled blocks.
  • Added support for FOR EACH operator overloading.
  • Added missing HB_P_PLUS support in hb_vmarrayPop() for overloaded ARRAYINDEX.
  • Fixed hb_itemUnShare() to enforce length of greater than 1.
  • Modified asString.allocated to be 0 based to overcome logical ambiguity in hb_itemPutCRaw() and hb_retclenAdoptRaw().
  • Added FOR EACH support to AA compatible hashes.
  • Removed unnecessary memset() on newly created items.
  • Added hb_dateJulianDOW() - retrieve day of week from Julian's date.
  • FT_BLINKW32( <Message>, <Row>, <Col>, <Blink Time> ) with support for more than one blink message.
  • ulHolder counter for Hash implemented. Hash memory is released if hash is not referenced. No need to call garbage collector.
  • Fixed GPF trap related to FINALLY.
  • Added stack cleanup and argument checking in HB_VMEXECUTE().
  • Added support for 2nd optional arg [nFlags] in HB_MACROCOMPILE().
  • Added argument checking in HB_MACROCOMPILE().
  • Added HB_THISARRAY( <nID|pPoiner> ) => aArray
  • Support for memory prealloc in arrays.
  • Added ASIZEALLOC( <array>, <num> ) -> <array>, set the pre-alloc step.
  • Added ALENALLOC( <array> ) -> <num>, get the pre-alloc step.
  • Added 2nd argument to error message in __MVPUT().
  • Fixed GPF trap related to hb_vmPushState().
  • Minor safety adjustment in hb_arrayReleaseBase().
  • Fixed DELEGATE MESSAGE command. Delegated messages weren't working.
  • Revised hb_vmInstringOrArray() to call hb_arrayScan() with bExact set to TRUE.
  • Fixed problem caused by += optimization used ofr array items.
  • Added new functions: hb_dynsymName(), hb_dynsymMemvarHandle(), hb_dynsymAreaHandle(), hb_dynsymSetAreaHandle()
  • Removed obsolete hb_dynsymFindFromFunction*().
  • Added support for block equality with ==.
  • Fixed RELEASE ALL EXCEPT <wildcard> (it did just the opposite).
  • Reset s_privateStackBase and s_privateStackCnt to 0 on CLEAR MEMORY or a RESTORE FROM without ADDITIVE clause.
  • Added debugging support for GLOBAL variables.
  • New object engine.
  • Some GPF traps.
  • Minor optimization in hb_vmOperatorCall().
  • Minor correction in hb_vmOperatorCallUnary().
  • Modified hb_vmPlus() to use explicit arguments and result pointer, rather than the stack.
  • Modified hb_vmOperatorCall() to accept optional pointer to result, instead of pushing result to stack.
  • Added HB_EXPORT double hb_itemGetNDDec( PHB_ITEM pItem, int * piDec ) to itemapi.c
  • Added HB_EXPORT PHB_ITEM hb_itemPutNDDec( PHB_ITEM pItem, double dNumber, int iDec ) to itemapi.c
  • Added HB_EXPORT PHB_ITEM hb_itemPutHBLong( PHB_ITEM pItem, HB_LONG lNumber ) to itemapi.c
  • Added HB_EXPORT PHB_ITEM hb_itemPutNumType( PHB_ITEM pItem, double dNumber, int iDec, int iType1, int iType2 ) to itemapi.c
  • Added support for new generic HB_P_LOCALNEARADD.
  • Synched hb_vmOperatorCall().
  • Fixed initialization of CLASSDATA.
  • In HB_FUNC( __MVSAVE ) added support for SET DEFAULT. It is now Clipper compatible ( SAVE TO ... ).
  • Fixed GPF when user code change type of some error object items.
  • Added RMDBFNTX initialization.
  • Fixed compilation with HB_TRACE().
  • Fixed GPF trap in hb_objGetRealCls().
  • Small modification which gives about 10% speed improvement of hb_clsFindMethod() - division is one of the most consumed operation - if it's possible replace it by bit shifting.
  • Fixed GPF trap caused by dynamic linker when an .hrb module calls a function from another previously loaded .hrb module.
  • Added hb_clsClassH() - return the uiClass for a PHB_ITEM passed.
  • Fixed problem in __ClsAddMsg when first parameter is Object. hb_parni() can return incorrect values if parameter of function is Array/Object and is not passed the second optional parameter to hb_parni() to retrieve a position of array.
  • Fixed bug in __ClsDelMsg() function.
  • Fixed bug in __CLSNEW.
  • Lock pivot item.
  • Fixed bug calling hb_execarray() with array and codeblock.
  • Fixed 2 minor bugs in hb_vmSend() related to Hash method calls using Hash:Method( <params> ) syntax.
  • Added support for operator overloading of native types to hvm.c
  • Corrected hb_objGetOpOver() to use hb_objClassH() in classes.c.
  • Added prg level HB_ResetWith( <xNewWith> ) to hvm.c.
  • Fixed hb_vmPlus() to seperate handling of INT + <String(1)> from <String(1)> + <INT>.
  • Few optimizations related to hb_vmPushString() followed by hb_xfree().
  • Completed support for operator overloading, including native types.
  • Fixed bug executing ONERROR method.
  • Fixed bug executing DESTRUCTOR method.
  • Fixed bug in __CLSMODMSG function.
  • Tentative fix to Destructors.
  • Tentative fix to retain active procedure context when executing __QUIT().
  • Fixed GPF trap in hb_objHasMessage().
  • Support Destructor with PHB_SYMB to support Destructor in classes inside .hrb files.
  • Fixed incorrect optimization break support for ENABLE TYPE to Codeblock.
  • Cover code for string item unsharing when passed by reference with macro HB_UNSHARE_REFERENCES.
  • Fixed possible GPF due to uninitialized variable.
  • Added hb_itemUnShare() function which clone string buffer in shared or static string items.
  • Added pCodeFunc to value union in HB_SYMB structure.
  • Fixed memory leak in all hb_stor*() functions when the passed parameter was an array with wrong size.
  • Added pointer comparasion types on hb_vmEqual/hb_vmNotEqual.
  • Renamed hb_itemReturnCopy() to hb_itemReturnForward().
  • Changed hb_itemReturn() to work like in Clipper.
  • Removed array management from handling of asBlock.value->pSelfBase.
  • Rewrote the low level debugger routines as C code and added some API functions and definitions to interact with the debugger UI.
  • Added hb_clsSetScope().
  • Fix bug in hb_clsUnmutexSync() and hb_clsRemutexSync().
  • Added a fourth parameter to the INETDGRAMBIND function to set the multicast address group. If given, the fourth parameter must be a string in quad dot format, and will mask the socket so to receive multicasts only from a certain address range.
  • Added hb_execFromArray() to hb_itemDo() functions when first parameter is HB_IT_ARRAY and support for execution with HB_SYMBOL given as pointer.
  • Use hb_vmPushState()/hb_vmPopState() functions - to save/restore VM state in hb_itemDo(), hb_itemDoC() and hb_itemDoCRef() functions.
  • Use hb_vmPushState()/hb_vmPopState() functions - to save/restore VM state in destructor call.
  • Fixed bug reported on harbour-users group in comparison empty strings with SET EXACT ON.
  • Fixed GPF trap when decreasing stack pPos before respective hb_itemClear() was called.
  • Added hb_stackPush()/hb_stackDec() to hb_vmPushState()/ hb_vmPopState() to safe currently process stack top item.
  • Added hb_vmAtInit()/hb_vmAtExit().
  • Fixed Operator Overloading to override the subject item of unary operators, with the return value of the respective method.
  • Corrected stack and symbol management in hb_vmOperatorCall() and hb_vmOperatorCallUnary().
xHarbour Run Time Library (RTL)
  • Fixed the default size of returned numeric value to be Clipper compatible
  • Fixed error of array bound error in configure method in tbrowse.prg
  • Fixed repositioning of colpos after delcolum in tbrowse.prg. Created ::nPrevDelColPos data to control it
  • Moved SUPPORT_UCP and SUPPORT_UTF8 setting to reduce command line overhead in DOS builds
  • Added new property ::aaStack - array of subarrays of { ProcFile(), ProcName(), ProcLine() } to tError.prg. This allows to capture the Call Stack of an error when error is intercepted by any error trapping for later processing by outer handler[s]
  • Safety VariantClear( pVariant ) in hb_oleItemToVariant() in Win32Ole.prg
  • Fix in tGet.prg; At any "9" picture, a "-" symbol is allowed only when data type is numeric (character type doesn't allows it, like in Clipper)
  • Fix to make __EJECT() more Clipper compatible by changing
    hb_fsWrite( .., "\x0C", 1) to hb_fsWrite( .., "\x0C\x0D", 2)
  • Fix when serializating numbers are over 10 digits
  • Enhanced support of BYREF arguments in Win32ole.prg
  • OLE: Added full support for BYREF
  • Added middle mouse key support.
  • Fixed runtime error when HB_LANGSELECT() was called without parameter.
  • Added operator overloading for =;==;!=.
  • Added support for non HB_GT_MULYI compilation.
  • Fixed GPF Trap in GETOLEOBJECT().
  • Added EOL at EOF.
  • Removed wrong HB_ITEM_UNLOCK().
  • Added TDataCache to cache rows fetched from datasource so they do not need to be reloaded on every movement.
  • Assignment of ::rowPos and ::colPos in TBrowse now works as expected.
  • Added 3th argument (lPropertiesOnly) to ::LoadFromText().
  • Fixed double call to UDF for every char typed.
  • Added 2nd arg bLocalPrintersOnly to GetPrinters().
  • Added 3rd item to each subarray when calling GetPrinters(.t.).
  • More conservative processing in AnsiToSysString(), AnsiToWide(), & WideToAnsi().
  • Revised ANSITOWIDE() and WIDETOANSI() to use AnsiToWide() & WideToAnsi() instead of redundant code.
  • Exported AnsiToSysString(), AnsiToWide(), & WideToAnsi().
  • Cleaned code to avoid broken strict-aliasing GCC warnings.
  • Added ::oDataCache:invalidate() into TBrowse:invalidate().
  • Added 4rd item to each subarray when calling GetPrinters(.T.). First, each subarray was {PrinterName, PrinterPort, PrinterScope}. Now it is {PrinterName, PrinterPort, PrinterScope, DriverName}.
  • Fixed possible GPF in hb_fsCurDirBuf().
  • Removed hb_filecase() and hb_fileTrim() functions.
  • Fixed a possible GPF and wrong results in filesys.c.
  • Fixed possible bug with empty value conversion in ::DispCell() method and TColumn:colorBlock parameter.
  • Fixed ::DispCell() coloring of background of cells when column has a color block.
  • Added support for CONNECTION and CODEPAGE clause in these commands:
    COPY TO ... [CONNECTION <nConn>] [CODEPAGE <cCdp>]
    COPY TO SDF ... [CODEPAGE <cCdp>]
    TOTAL ON ... [CONNECTION <nConn>] [CODEPAGE <cCdp>]
    SORT ON ... [CONNECTION <nConn>] [CODEPAGE <cCdp>]
  • Added missing header version types to DIR command (FPT, etc.).
  • Changed SayMembers method, now it accepts 2 new parameters SayMembers( cPad, lShowMembers, lReturnString ).
  • Added GetPointer() method returning internalbuffer pointer.
  • Added overloading of FOR EACH to support enumeration of OLE Collections.
  • Optimized OleValue support by adding explicit Methods ::OleValue() and ::_OleValue( xSetValue ).
  • Added support for returning Arrays of any supported type in win32ole.prg.
  • Use faster and Clipper compatible hb_dateJulianDOW() instead of hb_dateDOW().
  • Added HB_STR_DATE_BASE for conversion to string (Clipper compatibility).
  • Small Clipper compatibility modification in dates.c.
  • Use ValToPrg() instead of Str() for index to string conversion in GetReadVar() method.
  • Added prg level HB_CompileMacro( <cExp> ) -> cPCode.
  • Added prg level HB_vmExecute( <cPCode> [, pSym [, pGlobals ] ] ) -> xRet
  • Fixed a bug in tbrowse ( dbEdit() after a dbGoBottom() ).
  • ColorRect() can set more than a colored region on a TBrowse.
  • Fixed color-rect use when column has no color-block in tbrowse.
  • Multiple ::ColorRect()s can now be set before TBrowse is stable.
  • Added function kbdShiftsState for using with GTINFO(GTI_KBDSHIFTS)
  • Fixed function kbdShiftsState for keys NumLock, CapsLock and ScrolLock for Toggled keys instead for Key Down.
  • Changed the ::Invalidate() method of TDataCache since invalidation has to be done just before stabilization starts (clipper compatibility).
  • Enhanced TOLEAUTO_OLENEWENUMERATOR() to support interim IDispatch.
  • Enhanced VariantToItem() to support interim IUnknown.
  • Minor optimization in VariantToItem() of VT_BYREF & VT_VARIANT
  • Fixed 1 reffernce leak in TOLEAUTO_OLENEWENUMERATOR()
  • Minor optimization in SafeArrayToArray().
  • Minor correction to VT_BYREF in VariantToItem()
  • Corrected rare possible leak in TOLEAUTO_OLENEWENUMERATOR().
  • Fixed (de)"hilite" selected row in wrong places.
  • Removed HB_ prefix and new exhancements implemented in NumToHex(), HexToNum(), StrToHex(), HexToStr().
  • Replaced MCOL() with WMCol() and MROW() with WMRow().
  • Added new C functions: hb_ctMouseCol() hb_ctMouseRow()
  • Added new PRG functions: WMCol() WMRow() WMSetPos() WSetMouse() WInfo()
  • Fixed hb_ctExit(): removed use hb_ctWAClose()
  • Fixed hb_ctWSelect(): Window-0 not moved
  • Femoved colorletter() static function. This function was created to avoid blinking, but since setblink doesn't work in xHarbour, this function is useless.
  • Added autodetection of UTF-8 mode for SLANG 2.0.
  • Fixed GPF trap and optimized support of VT_DATE.
  • Removed no longer needed DateToDbl() and DblToDate()
  • Now, calling wFormat() without arguments will cancel all borders previously set.
  • Fixed HB_REGEXATX start position (before 0-based, now 1-based).
  • New HB_REGEXALL() function. This function returns all occurrences from a regex search.
  • Fixed possible memory leak in HB_REGEXATX and HB_REGEXALL.
  • Added missing error handling in win32ole.prg.
  • Fixed bug in picture when numeric values.
  • Fixed extra spaces bug in picture.
  • Removed static attribute from 3 prg callable functions.
  • Minor fix to not add a phanton record when importing data.
  • Added missing header for proper C++ compilation in seconds.c.
  • Fixed GPF on application exit when CT Window is active.
  • Fixed default keyboard buffer size in hbapigt.h.
  • Minor optimization in win32ole.
  • Fixed problem when using append from file for condition SDF.
  • Added missing hb_ole prefix to exported C functions.
  • Fixed GPF in handing of GPF interception handlers related to obsolete hb_dynsymFindFromFunction().
  • Added support for VT_ARRAY of any supported native VT_* type.
  • Added hack to save hidden signature in strings generated from SafeArrays to allow the process to be reversiable when such a string is passed back to OLE.
  • Renamed class VT to VTWrapper, and VTArray to VTArrayWrapper.
  • Added [] and "FOR EACH" operator overloading for VTArrayWrapper().
  • Added auto wrapping of non VT_VARIANT arrays with VTarrayWrapper() class.
  • ::GetText( lSoftCR ) method accepts parameter so Soft CR can be inserted in returned text.
  • Make the return value of memoedit() function Clipper compatible by inserting Soft CR characters.
  • HB_FUNC( MEMOLINE ) added optional 7th parameter which is the start position in the string to search from. If passed by reference the next starting position is stored in the variable. This change allows _much_ faster memo field extraction than the tradition mlcount()/for/next loop - particularly with larget memo's.
    MEMOLINE( <cString>,[<nLineLen>],[<nLine>],[<nTabSize>],;
    [<lWrap>],[<bLongLines>],[<@nStartOffset>]) --> cLine
    Do this;
    nLen:= LEN( cString )
    nOffSet:= 1
    DO WHILE nOffSet <= nLen
    c:= memoline( cString, , 1 ,,,, @nOffset )
    ... Do something
    Instead of;
    n:= MLCOUNT( cString )
    FOR x:= 1 TO n
    c:= memoline( cString, , x )
    ... Do something
    NEXT x
  • ::ColorRect management fixed in TBrowse.prg to be more C53b compatible.
  • ::DispCellPos removed from TBrowse.prg it was buggy and useless.
  • ::RefreshCurrent in TBrowse.prg now reset ::ColorRect as C53b does.
  • ::Configure code flow wrongly checked oCol:footing in TBrowse.prg.
  • File is now closed after APPEND FROM.
  • Handle K_CTRL_N as per Clipper to insert a line in memoEdit().
  • Replace calls to devpos() with setpos() in TBrowse.prg to maintain clipper compatability.
  • AddDelegate function to support natives Delegate messages.
  • Changed EvalSkipBlock from static function to protected method and changed all EvalSkipBlock( ::skipBlock, n ) and Eval( ::skipBlock, n ) to ::EvalSkipBlock( n ).
  • EvalSkipBlock moved out from HB_COMPAT_C53.
  • All Windows structures like RECT/POINT/LOGFONT/LOGBRUSH now are initialized to an empty structure.
  • Fixed return value when use "@R 999,999.99" picture.
  • Implemented hb_fsExtOpen(). It should be full Clipper compatible with some minor extensions. Local RDDs should only use this function to open/create files.
  • Added hb_getregex() and hb_freeregex() functions.
  • Added HB_FUNC( OS_ISWIN2000_OR_LATER ) to winos.prg.
  • Fixed to return same value when use "@R 999,999.99" or "999,999.99" picture.
  • Clean GC when GTXWC is closed.
  • Fixed possible GPF on some machines - strcpy() should not operate on overlapped buffers.
  • Fixed fast mouse wheel movement.
  • Added K_MWFORWARD and K_MWBACKWARD to gtcrs.c and gtcrs.h.
  • Added HB_FUNC( OS_ISWINVISTA ), Detect if OS is Windows Vista.
  • Added CreateFontAPI(), SetColorAPI(), TextOutAPI() to win32prn.prg for direct access in subclasses to WinAPI.
  • Change default charset to DEFAULT_CHARSET from OEM_CHARSET in CreateFont().
  • Moved cursor blinking code to hb_xvt_gtProcessMessages.
  • Added logic to control cursor color and blink rate.
  • Fixed problem in which oldest log file wasn't being erased when maximum number of backup files was reached.
  • METHOD GetTextWidth(cString), fix width calculation.
  • Changed defines named o_??? in TBrowse.prg for better management.
  • Changed method named DrawARow() to DrawRow() and method named AColInfo() to ColInfoArray() for better knowledge.
  • Created method DefColorToDisp( oCol:DefColor ) in TBrowse.prg to return default array of indexes if any index is out of scope. Clipper compatibility.
  • METHOD Box(), altered to also support Rounded Rectangles.
  • Added METHOD MM_TO_POSX( nMm ) Conversion methods from mm on page to win32prn.prg.
  • Added METHOD MM_TO_POSY( nMm ) to col or row position. to win32prn.prg.
  • Added METHOD INCH_TO_POSX( nInch ) Conversion methods from Inch on page to win32prn.prg.
  • Added METHOD INCH_TO_POSY( nInch ) to col or row position to win32.prg.
  • Added METHOD TextAtFont() Print at pos in specified font & color to win32.prg.
  • Added M ETHOD SetBkMode( nMode ) Set background print mode to win32.prg.
  • Now hb_spOpen is used instead of hb_fOpen in copyfile.c.
  • Fixed ColorRect behaviour for Clipper compatibility in TBrowse.prg.
  • Created any new methods, datas and defines for ColorRect control and other ones are changed to same purpose in TBrowe.prg.
  • Fixed bug in down() and up() methods to skip records even if we call down/up before call stabilize, as Clipper's tbrowse.
  • Fixed offset setting in pcreposix.c for first match when REG_STARTEND is used.
  • Added missing extern declaration in dftables.c and chartables.c to satisfy C++ compilers.
  • Added basic xHarbour RegEx functions:
    BOOL hb_regexCompile( PHB_REGEX pRegEx, const char *szRegEx, int iCFlags, int iEFlags );
    BOOL hb_regexGet( PHB_REGEX pRegEx, PHB_ITEM pRegExItm, int iCFlags, int iEFlags );
    void hb_regexFree( PHB_REGEX pRegEx );
    BOOL hb_regexMatch( PHB_REGEX pRegEx, const char *szString, BOOL fFull ).
  • Replaced hardcoded newline characters (unix) with the output from hb_conNewLine() in XML output in hbxml.c.
  • Clipper allow picture array smaller then header array in dbedit.prg.
  • Minor change to downloadfile method() iin ftpcln.prg.
  • Unshare given string item in FREAD() function.
  • Added missing initialization of HB_REGEX structure.
  • Altered ::fDefault INIT to -1 so ANSI_CHARSET can be used.
  • METHOD EndPage() - reset font for new page on Win9X.
  • Fixed any assignable datas in TBColumn that was blocked.
  • Added 5th parameter to TBrowse:new() method passed from TBrowseNew() and TBrowseDB() functions, to control colorrect.
  • Added various hidden methods to control colorrect.
  • Added hidden setrowpos method that allow us to change a row at run-time via TBrowse:RowPos := n.
  • Fixed TBrowse/TBColumn colors management, as colorblock, colorrect, colorspec and default color.
  • Added 5th parameter to TBrowse:New() passed from TBrowseDB() function to control colorrect.
  • Minor fix on dehilite method() for proper show of tbrowse on HPUX in TBrowse.prg.
  • Fixed bag in hb_fsExtOpen() when _SET_PATH was scanned for files.
  • Addedd support for CDATA nodes. A new type of node (CDATA) is created, and the content of the node is not parsed. CDATA blocks inside attribute values are not supported.
  • Fixed function IsLocked().
  • Fixed bug in ::LoadFromText() processing of nested object[s].
  • Optimized/rewrote ::LoadFromText() in persist.prg.
  • Auto detect terminal size in *nixes when application runs in TTY device.
  • Reposition cursor to proper position at exit to avoid eating empty lines added by repeated QOUT().
  • Do not stop application when run in TTY with TOSTOP flag set in GTSTD init/exit code.
  • Added extra parameters & handling to SetDocumentProperties and made it callable during printing.
  • Modified changing of Paperbin, Duplextype, Papersize, Orientation and Printquality to happen during method StartPage().
  • Added nAlign parameter to methods TextOut, TextOutAt, TextAtFont possible alignments are 0 = left, 1 = right, 2 = centered.
  • Fixed bug in DelColumn() method.
  • VM stack is now savee/and restored before executing user code by using hb_itemDo() function.
  • Fixed EVENTMASK checking.
  • Rewritten inkey functions to fix some differences between Clipper It's now shorter more readable and should better play with inkey poll checking.
  • Fixed bug on insitem method. The column pos of moved menu item need to be recalculated.
  • Fixed call back calls to use hb_vmPushState()/hb_vmPopState().
  • Strip chr(141) and chr(10) from returned line in memoline() as C53B does, instead of removing it from end of line only.
  • Added implicit resolution of default ole method/property
  • Added explicit support for default ole method/property by means of pseudo property :OleValue
  • Added Operator overloading for +;-;*;/;%;^;++;-- to TOleAuto class
  • Added method AddGetForm which is similar to httpcln.prg post put using the "GET" protocol.
  • Added support for METHOD Post( cPostData) to accept cPostData as a 2d array.
  • Fixed handling of cookies to conform more to the specs, especially when the object is used to connect to multiple servers.
  • Fixed problem when doing base64 encoding on mt programs.
  • Fixed bug on getReply Method() which was entering on an infinite loop.
  • Added HB_EXPORT to hb_iswinnt().
  • Added GTI_XCURSORCOLOR1, GTI_XCURSORCOLOR2, GTI_XCURSORBLINKRATE. Under gtxwc cursor is a "colored" character, these settings help to make it more visible.
  • Added Rename( cOld, cNew ) to ftpcln.prg - to rename files on ftp server.
  • Added Ls( spec ) to ftpcln.prg - to list ftp server contents.
  • Added UpLoadFile( cLocalFile, cRemoteFile ) to ftpcln.prg - to upload files to server.
  • Added DownLoadFile( cLocalFile, cRemoteFile ) to ftpcln.prg - to download files to server.
  • Added MKD( cPath )to ftpcln.prg - create an directory o ftp server.
  • Added supported for SYNCH attribute to Methods in MT mode
  • Fixed gpf traps when compiling literal strings (static).
  • Added logic to detect invalid, or switched 'Self' object in hb_vmSend() and raise
    substitutable a RT Error. Programmers Note: Clipper ignores the return value of
    constructors, and we cloned it. But I find it extremely dangerous to silently override
    programmer code. Now we'll detect such condition and throw an error. Additional
    benefit is that now the programmer CAN SWITCH the self value, in error handling.
  • Added missing check on s_uiActionRequest to yesterday's change in hb_vmSend()
  • Moved checks for s_errorHandler to precede check on hb_vm_iTry
  • Minor fix to allow compile in MT on HPUX in Inet.c
  • Minor corrections in error handling of hb_itemUnRefOnce()
  • Close_binary() for HB_OS_WIN_32 check for zero length file
  • Corrected to return value of the constructor call in :ConstructorCall() in TClass.prg.
  • Corrected to NOT call :New() unless it's a declared constructor in TClass.prg.
  • Added Alert() warning when no constructor found, yet arguments passed in TClass.prg.
  • Alter call to DispoutAt() to added .T. for cursor where necessary in TGet.prg
  • Added parameter bSetPos to hb_gtWriteAt() which determines if cursor pos is updated
    in GTApi.c
  • Static BOOL s_DispOutAtSetPos = FALSE used to set the default behavior of
    DISPOUTAT() for cursor position
  • HB_FUNC( DISPOUTATSETPOS ) to set/return value of s_DispOutAtSetPos
  • DISPOUTAT() 5th parameter to determine if cursor position is updated. If parameter not
    passed value of new static s_DispOutAtSetPos used
  • Fixed _POSIX_SYNCHRONIZED_IO check to meet the standard.
  • METHOD xDo() - added Self as 4th parameter to UserFunction in MemoEdit.prg
  • Restored keyboard translation set by HB_SETTERMCP().
  • Added support for HB_SETTERMCP() in GTDos
  • Added real secondsCPU() support for WinNT
xHarbour Preprocessor
  • Fixed 3 bugs related to processing of extended strings (E"").
  • Minor optimizations and correction related to E"..." in hb_pp_NextToken().
  • Minor additional correction to hb_pp_RdStr() related to E"...".
  • Added support to CONSTRAINT declaration in INDEX ON command.
  • Removed #translate of _GET_ added on June-30-2005 (now properly handled by parser).
  • Added exteneded INDEX ON parameters (TEMPORARY/EXCLUSIVE/FILTERON).
  • Fixed case of wrong transformation of '[' ']' to '"' '"' when cLastChar is '.' in getExpReal().
  • Fixed 2 rules where "IN" was anchor of an optional clause by adding non optional versions.
  • Added support to CONNECTION clause in USE command.
  • Fixed minor bug in ParseCommand() when '=' just before '=>'
xHarbour Debugger
  • Added support for GLOBALS variables
  • <
  • Added capability to inspect watchpoint values
  • Moved editing of watchpoint expressions to Ctrl-Enter, because Enter is used to inspect watchpoint values
  • Fixed RTE with keypresses when source file is not found
  • Fixed parsing of logical constants in expressions
  • Updated to use the new debugger API.
  • Save and restore application's active GetList.
  • Removed 254-character limit on script line length.
  • Fixed breakpoint highlighting
  • Save and restore application's DispCount() value in debugger.
  • Fixed breakpoint saving.
  • added hb_strndup(), hb_strnlen(), hb_put_ieee754(), hb_get_ieee754(),
    hb_put_ord_ieee754(), hb_get_ord_ieee754(), hb_get_rev_double(),
    hb_get_std_double(), hb_get_le_int64(), hb_get_le_uint64(), hb_put_le_uint64()
xHarbour RDD
  • Added some missing FlexIII array items - many thanks to Mindaugas for list of Flex items
  • Added DBCONSTRAINTINFO structure and extended DBORDERCREATEINFO to hold constraint info.
  • Added few parameters to ORDCREATE() to allow optional referential constraint handling by RDD.
  • Separate record decoding from record reading for easier integration with upper level RDDs.
  • Fixed updating FVP DBF header when structural index is created.
  • Make BOF/EOF flag update exactly the same as in Clipper, in dbSkip(0) when positioned at phantom record.
  • Fixed the problem with fieldput(<n>,nil) at phantom record.
  • Added "A" Autonumeric field type functionality.
  • Reverted "A" autoincrement field type. It had some incompatibilities.
  • Added default OPEN() method, it should be called by RDD as supper method from OPEN() on success (Clipper compatible).
  • Added default CREATE() method (as above).
  • Added TRANS() method.
  • Added TRANSREC() method.
  • Added RDDINFO() method with default actions for already defined RDDI_* values.
  • Use hb_fsExtOpen() only to open/create files (Clipper compatible).
  • Call SUPER_OPEN()/SUPER_CREATE() in OPEN()/CREATE() methods.
  • Make all necessary modifications to given file names (code removed from dbUseArea()/dbCreate()) if necessary in OPEN()/CREATE() methods.
  • Added RDDINFO() method.
  • Added support for switchable table extension.
  • Removed hb_dbfTransRec().
  • Reimplemented DBEXISTS() and DBDROP()
    Now to remove table with its memofile(s) and production indexe(s) it is enough to call: dbDrop( cTable ).
    To remove index only: dbDrop( cTable, cIndex ) (DBF RDD ignores in such case cTable paramter but other RDDs may need it).
    To check if table exists use: dbExists( cTable ).
    To check if index exists use: dbExists( cTable, cIndex ) (as above DBF RDD ignores cTable).
  • Fixed alias stripping from field expression.
  • Initialize lpvCargo in DBSETFILTER.
  • Added support for embedded spaces in field name.
  • Changed hb_rddFieldIndex() to strip leading and trailing spaces and upper the give field name.
  • Changed hb_rddFieldExpIndex() - removed last parameter.
  • Set all flags in SET_LOCATE() method.
  • Fixed bug in APPEND FROM when the source database has exactly the same fields but with differ size and RDD use optimized (whole record) copping.
  • Check the result from SELF_CLOSE() in dbCloseArea() if it returns FAILURE then do not continue operation.
  • Fixed dangerous code (possible memory corruption on reentrance) in CLEARREL() method.
  • Added default WA LOCATE() method.
  • DBORDERINF() now also to pass ordbag parameter as number - necessary for SIX3 emulation in some functions.
  • __DBLOCATE() and __DBCONTINUE() now use SELF_LOCATE() method (in SELF_SETLOCATE() now also other DBSCOPEINFO fields are set).
  • Updated for RDD modifications.
  • Added ORDRELKEYPOS() - common for all RDDs functions which supports DBOI_RELKEYPOS which works like AdsGetRelKeyPos()/AdsSetRelKeyPos().
    in ADS RDD.
  • Added private RDD settings.
  • Added hb_dbfGetMemoData()/hb_dbfSetMemoData().
  • Modified dbf1.c for SMT support.
  • Fixed internal error when DBCREATE() is called with empty array.
  • Added support for {"D", 4, 0} fields.
  • Added 3-rd parameter to PUTVALUEFILE().
  • Accept also filed name in dbFileGet()/dbFilePut().
  • Fixed function DbRead() to exclude memo fields.
  • Added support for SIX3 "V" fileds. It's a variable field in which.
  • Added hbsix library.
  • Some small extensions for SIX compression.
  • Fixed default RDD requests. Now ANNOUNCE RDDSYS disable linking of any RDD.
  • Added rddID to AREANODE in hbapirdd.h.
  • Fixed possibly dangerous use of C stack HB_ITEM and some minor optimizations.
  • Added hb_fsFreeSearchPath() function.
  • Added RDDI_* definitions for non workarea RDDINFO() method in
  • Added some new DBOI_* and DBI_* definitions in
  • Added hb_fsFreeSearchPath().
  • Changed hb_fsFNameSplit() to respect HB_DRIVE_LENGTH_MAX and fixed some possible buffer overflow.
  • Added DBOI_BAGORDER (number of first order in a bag) for some SIX3 sx_*() functions emulation.
  • Changed {SELF|SUPER}_RECNO( AREAP, PHB_ITEM ) to {SELF|SUPER}_RECNO( AREAP, ULONG *) in hbapirdd.h.
  • Added {SELF|SUPER}_RECID( AREAP, PHB_ITEM ) to hbapirdd.h
  • Added hb_dbfGetMemoData()/hb_dbfSetMemoData().
  • Added DBFDATA structure to keep private RDD settings
  • Added ISSUPER_INIT(wa) and ISSUPER_EXIT(wa) macros.
  • Added init() method to hbapiitm.h.
  • Added DBI_TABLETYPE to it sets default header format for newly created DBF files - possible values are now: DB_DBF_STD and DB_DBF_VFP.
  • Added RDDI_MEMOVERSION to to set subversion in given memo type.
  • Added 3th parameter to PUTVALUEFILE() in hbrddwrk.h.
  • File is now closed after APPEND FROM.
  • Added non WA method hb_waRddUnsupported().
  • Added RDDINFO() function.
  • Added hb_rddGetNode( USHORT uiNode ) function.
  • Send RDD ID as forth parameter to _GETFUNCTABLE().
  • Added support for empty aliases (Clipper compatible).
  • Added hb_rddFieldSymIndex().
  • Added hb_rddFieldNameIndex(), like hb_rddFieldIndex() but it uses hb_dynsymFindName() to hash filed name.
  • Added hb_rddFieldExpIndex(), check if expression is a single field name in given WA (strips aliases and [_]FILED->) and return field number or 0.
  • Added hb_rddOpenTable() and hb_rddCreateTable().
  • Added hb_fldStructure(), hb_tblStructure().
  • Added hb_rddTransRecords().
  • Changed __DBAPP() and __DBCOPY() to use hb_rddTransRecords().
  • Modified 4-th anf 5-th parameters in DBCREATE to be Clipper compatible.
  • Added empty alias support in DBCREATE()/DBUSEAREA().
  • Do not make any modifications in given file name and alias in DBCREATE() and DBUSEAREA(), it should be done by RDD inf necessary.
  • Optimized AFIELDS() and DBSTRUCT()
  • Fixed return value when NETERR() called with logical parameter.
  • Added support for new parameters in ORDCONDSET() the full syntax is:
    ordCondSet( cFor, bFor, lAll, bWhile, bEval, nStep, xStart, nNext, xRecord, lRest, lDescend, lCompound, lAdditive, lCurrent, lCustom, lNoOptimize, cWhile, lTemporary, lUseFilter, lExclusive ) or INDEX ON ... [MEMORY|TEMPORARY] [EXCLUSIVE] [FILTERON]
  • Added ORDBAGCLEAR() (close selected indexes by calling ORDLSTDELETE() RDD method).
  • ORDDESTROY() returns TRUE (when SUCCESS) or FALSE now.
  • Updated DBDROP() and DBEXISTS().
  • Added SELF_PACKREC() for compatibility with Clipper and easier memopack implementation.
  • Added GETVALUEFILE() and PUTVALUEFILE() methods to DBF RDD.
  • Added support for {"D", 4, 0} fields.
  • Added support for SIX3 "V" (weakly typed) files.
  • Always force FPT memos for newly created files when DBF type is set to VFP.
  • Added mapping for "Y", "T", "@" DBF types to number items for DBF files with extended field types, unsupported by xHarbour VM.
  • Added: #xtranslate _GET_( ( ) => _GET_(
    Note from programmer: Parenthesis should have no significance in any valid
    LValue (if I'm not mistaken?) so this corrects parse errors on @ x, y, GET ( exp )
  • Fixed typo in Dbf2Text()
  • Added new DBOI_* switches:
    DBOI_BAGCOUNT - number of open order bags
    DBOI_BAGNUMBER - bag position in bag list
    DBOI_ISMULTITAG - does RDD support multi tag in index file
    DBOI_ISSORTRECNO - is record number part of key in sorting
    DBOI_LARGEFILE - is large file size (>=4GB) supported
    DBOI_FREEZE - freeze order updating
    DBOI_WARM - restore order updating
    DBOI_CHGONLY - update only existing keys
    DBOI_SHARED - is index open in shared mode
    DBOI_ISREADONLY - is index open in read only mode
    DBOI_WRITELOCK - get/set index write lock
    DBOI_READLOCK - get/set index read lock
    DBOI_UPDATECOUNTER - get/set update index counter
xHarbour DBFCDX
  • Added codepage translation for dbOrderInfo(DBOI_SKIPWILD,,, cPattern)
  • Added code page translation to SKIPRGEX.
  • Respect FOR condition in custom indexes.
  • Added RDDINFO() method.
  • Use hb_fsExtOpen() only to open/create files.
  • Modified to keep compatibility with base RDD modifications.
  • Changed to use hb_getregex()/hb_freeregex().
  • Fixed possible GPF when SELF_ORDLISTADD() fails in production index aouto open procedure.
  • Fixed possible buffer overflow.
  • Use hb_rddFieldExpIndex() without the last parameter.
  • First call SUPPER_CLOSE() and check the results for trigger implementation.
  • Modified to use xHarbour RegEx API not the POSIX one.
  • Added support for DBOI_RELKEYPOS - ORDRELKEYPOS() returns in DBFCDX exactly the same results as in ADSCDX when the same index file is used also when scopes are used.
  • Updated for PUTVALUEFILE() modifications.
  • Added support for EXCLUSIVE and TEMPORARY clauses of INDEX ON ... command in DBFCDX.
  • Minor modification to allow opening CDX files with TAGNAME length not equal to 10 characters.
  • Minor fixes _DBFCDX to dbfcdx.
  • Use hb_fsExtOpen() only to open/create files.
  • Added switchable memo file extension.
  • Added support for SMT and DBT files.
  • Added GETVALUEFILE() and PUTVALUEFILE() methods - now dbFileGet()/dbFilePut() functions can be used with DBT, FPT and SMT files.
  • Added support for SIX3 "V" fileds. It's a variable field in which data is stored partialy in DBF and MEMO file.
  • Added support for SIX encryption in DBF tables without MEMOs.
xHarbour DBFNTX
  • Fixed the problem with having indexes with exactly the same file (path) and tag names but different extensions. Thanks to Lajos Mihálffy for information and code example
  • Fixed ordKeyVal() in shared mode.
  • Added code page translation to SKIPRGEX.
  • Added code page translation in ORDKEYADD/ORDKEYDEL.
  • Force to set 0 byte at the end of index key data to avoid any bad interactions with future VM API modifications
  • Fixed possible GPF when "/an/existing/path/" was used as file name.
  • Fixed GPF when DBOI_SKIPEVAL, DBOI_SKIPEVALBACK, DBOI_SCOPEEVAL called without valid parameters.
  • Removed hack in ORDCONDINFO() method, no longer necessary due to new members in DBORDERCONDINFO structure.
  • Added RDDINFO() method.
  • Added full support for structural and production indexes (AUTOOPEN/AUTOORDER).
  • Added write buffer in indexing and tuned memory buffer size, this should speed up indexing a little bit.
  • Added EXCLUSIVE and temporary indexes.
  • Added support for SIX3 like index thermometer.
  • Added support for template indexes.
  • Added multikey custom indexes (so the same key and record can be stored more then once).
  • Use hb_fsExtOpen() only to open/create files.
  • Modified to keep compatibility with base RDD modifications.
  • Added switchable index file extension (.ntx by default) - rddInfo( RDDI_ORDBAGEXT, [<cNewExt>] ) -> <cOldExt>.
  • Added switchable record number sorting in index files (off by default) - rddInfo( RDDI_SORTRECNO, <lSort> ) -> <lOldVal>.
  • Added switchable large file support (up to 4 TB) (off by default) - rddInfo( RDDI_LARGEFILE, <lLarge> ) -> <lOldVal>.
  • Added switchable multitag support (on by default) - rddInfo( RDDI_MULTITAG, <lMultiTag> ) -> <lOldVal>.
  • Added switchable production index support (off by default) - rddInfo( RDDI_STRUCTORD, <lStruct> ) -> <lOldVal>.
  • Changed to use hb_getregex()/hb_freeregex().
  • Fixed possible GPF when SELF_ORDLISTADD() fails in production index aouto open procedure.
  • Use hb_rddFieldExpIndex() without the last parameter.
  • Added missing checking for user value in ordKeyAdd()/ordKeyDel() for template tags.
  • First call SUPPER_CLOSE() and check the results for trigger implementation.
  • Added support for DBOI_RELKEYPOS - ORDRELKEYPOS() returns in DBFNTX different results then in ADSNTX.
  • Changed default supper RDD in DBFNTX to DBFFPT and set MEMOTYPE to DBT.
  • Fixed bug in positioning after record update.
  • Optimized tag number request.
  • Use hb_fsExtOpen() only to open/create files.
  • Added switchable memo file extension.
  • Fixed HB_TRACE(...) message
  • Fixed typo in indexing tables with active relations
  • Added optional support for multi tag indexes
  • Added support for optional binding record number with index Key value what
    eliminates very inefficient behavior of in standard NTX files when there is a lot
    of duplicated keys
  • Added optional support for large files up to 4 TB
    Note from programmer: Enabling any of the above features cause that indexes
    cannot be read by Clipper which does not support them. Indexes with bound
    record number have the same format and can be read by Clipper but should
    not be modified - to avoid any problems with such unexpected modifications
    One bit in NTX header is set, causing Clipper to not be able to open them.
  • Change internal procedures to eliminate any linear scanning and always use optimal
    algorithms if possible. Now DBFNTX is very good base to implement DBFNSX.
  • Added ordDestroy(), ORDLISTDELETE() method to close single order bag
  • Implemented SIX3 like tag thermometer flags
  • Implemented all DBOI_* actions
  • Added missing RT errors and eliminate most of internal errors
  • Added rest of missing DBFCDX functionality like: ordFindRec(), ordSeekEval(),
    ordSeekRegEx(), ordSeekWild(), ordSkipUnique() ... and added new one so far
    supported only by SIX3 in SIXCDX/SIXNSX Clipper RDDs. Our DBFCDX
    will have to be updated to also support it - now DBFNTX has most features and
    is finished.
  • AdsStmtSetTablePassword( cTableName, cPassword ). Sets a base table's
    encryption password that will be used when the SQL statement is executed.
  • replaced NULL in error message by 0 for some pedantic C++ compilers
  • Fixed HB_TRACE() debug message
xHarbour RDDADS
  • Cleaned the HB_EXPORT usage and replaced direct access HVM internals by functions
  • Rewritten ADSMGGETUSERNAMES() - now it does not access any item internals, is safe for future automatic GC activation and is faster because array resizing has been eliminated
  • Tweaked BYREF handling.
  • Tweaked detection of "is data dict" to include ADS_SYS_ADMIN_CONNECTION.
  • Plugged minor memory leak.
  • Added connection types.
  • Added AdsGetHandleType().
  • Changed function AdsSkip() (minor optimization when skipping).
  • Fixed casting of ADS connection handle when return and retrive to/from item by adding macros to operate on it
  • Fixed bugs with direct modifications of string item internals by old hb_ansioem()/hb_oemansi().
  • Removed hb_ansioem() and hb_oemansi() functions and added hb_adsOemToAnsi(), hb_adsAnsiToOem(), hb_adsOemAnsiFree().
  • Cleaned the code which called hb_ansioem() and hb_oemansi() to avoid redundant memory allocation and freeing.
  • Updated to version 8.0 from the Advantage Database SDK package.
  • Changed ADS_MAX_KEY_LENGTH to respect versions of ads prior than 8 when the value is 256, not 4082.
  • Fixed AdsMgGetUserNames() which now returns a 2-D array of information about users currently connected to the Advantage Database Server.
  • Added support for ADS's special ";" concatenation operator for .adi indexes.
  • Store RDD ID in static variable.
  • Allow ACE library to select default alias to not force xHarbour convention which can be incompatible with ADS.
  • Keep database open after CREATE() method (Clipper compatible).
  • Modified ads1.c to keep compatibility with base RDD modifications.
  • Added basic RDDINFO() support.
  • Register ADS as three separate RDDs: ADSNTX, ADSCDX, ADT (ADS RDD left for backward compatibility) - they do not need to set table type.
  • Synchronize SET_DECIMALS with ADS.
  • Added support for relations between ADS and non ADS workareas and ADS only relations which cannot be resolved by ADS.
  • Fixed index key conversion in ordscope() and ordkeyval().
  • Aadded support for ordRelKeyPos() (common RDD version of AdsGetRelKeyPos()/AdsSetRelKeyPos()) and tuned the value calculated for tables without indexes.
  • Fixed BOF/EOF/FOUND flag updating in child areas.
  • Changed some internal logic basing on information about pending relations and simplified ADS BOF updating.
  • Fixed SEEK LAST to work like in Clipper.
  • Changed SELF_LOCK()/SELF_RAWLOCK() to use ACE API directly (basing on documented behavior).
  • Added explicit locking inside APPEND() operation - it resolves the problem with automatic removing locks on appended records after any record movement or updating by ACE library.
  • Added some missing checking for lock (when bTestRecLocks set) in some operation like DELETE()/RECALL().
  • Added methods for relations.
  • Added support for _SET_AUTOORDER.
  • Implemented DBDROP(), DBEXISTS() with xHarbour file API - it should be enough for most of installation.
  • Read/write date values in Julian represenation if possible.
  • SELF_GETVARLEN() now returns the real memo item length.
  • Added hb_rddGetADSWorkAreaPointer() to use instead of hb_rddGetCurrentWorkAreaPointer() in all ADS*() functions.
  • Added some RDDI_* actions in SELF_RDDINFO().
  • Added GETVALUEFILE() and PUTVALUEFILE() methods - now ADS* RDDs works with dbFileGet()/dbFilePut() functions.
  • Fixed some functions to use WA methods to avoid desynchronization between ADS* RDD and ACE layer.
  • Added adsOrderListDelete() and implemented ordBagClear( cIndex ) in ADS* RDDs
  • Modification in default connection setting.
  • Store callback pointer in item created by hb_itemNew()
  • Go to phantom record when using GOTO "deleted record" in ADT tables.
  • Widespread changes to all handling of Connections in ads1.c and adsfunc.c
xHarbour CT.LIB
  • Modified proc GetPassword( oGet, nLen ) so that the nLen param is optional to be compatible with older versions of getpassword
  • Fixed Cursor showing.
  • Fixed escape of getsecret function when ESC key is pressed.
  • Added oget:undo() when esc key is presses.
  • Added CT KEYSEC() and KEYTIME() functions.
  • Fixed filecopy to set date and time to the target file as the same as source file.
  • Reincorporated CTWINON, CTWINOFF.
  • Fixed clipper incompatibility for zero, negative numbers and overflow in NTOC().
  • Added COMPLEMENT(), NUL() functions.
  • Added KBDSTAT() function.
  • Created 4th parameter <lShowError> in NetReDir() function for Clipper compatibility. The default value of <lShowError> is false.
    The new syntax is: NetRedir(cLocalDevice,cNetDevice,[cPassWord],[lShowError]), if <lShowError> is not passed, the NetRedir will return only .T. or .F.
    like Clipper's NetRedir, otherwise, will return .T. or .F. and an alert error box if any error occurs.
xHarbour LIBNF.LIB
  • Removed direct use of HB_VM_STACK and fixed compilation.
  • GCC warning cleaned.
  • Fixed month next, month previous, year next and year previous navigation to real date value instead of -30, +30, -365 and +365 days jump to obtain correct navigation skips.
  • Added two functions for simulate blink on OS where is not present:
    FT_BLINKW32( <Message>, <Row>, <Col>, <Blink Time> ): display a blinking message on Row, Col at blinkt time. Only one blink message for now.
    FT_BLINKW32CANCEL(): cancel previous set blinking message
  • Added missing fttext.c and dfile.prg
xHarbour GTWIN.LIB
  • Added stack indirection by means of hb_GetStack()
  • Added function kbdShiftsState for using with GTINFO(GTI_KBDSHIFTS) but with ALT detection disabled for now.
  • Fixed function kbdShiftState to static.
  • Moved alt-numpad handling to a seperate function. This will allow the ability to turn this compatible handling off if you desire.
  • Moved Top-row Caps log bug handling code to a seperate function. This code is disabled by default.
  • Removed hb_idleState() hack from gt_ReadKey.
  • Added hb_idleState() call to prevent 100% CPU usage while Alt key is down.
    Fix provided by Valery Belorustcev.
xHarbour GTWVT.LIB
  • Added more constants:
  • Added more constants:
  • Function Wvt_ChooseColor changed to return -1 when the dialog box is canceled and 0 when the black color (red=0/green=0/blue=0) is selected.
  • Fixed function kbdShiftState to static.
  • Fixed resources leak in wv*_drawline() and wv*_drawoutline().
  • Fix resource leak in gtResetWindowSize(). A severe bug for Win98.
  • Missing code fixed in wv*_drawlineex().
  • Reverted latest optimization due to scroll bug
  • Fix calculation of iNextPos in hb_wvt_gtAddCharToInputQueue() and
    hb_wvt_gtGetCharFromInputQueue(). Resolves problem reported of lost input characters.
xHarbour GTWVW.LIB
  • Function Wvt_ChooseColor changed to return -1 when the dialog box is canceled and 0 when the black color (red=0/green=0/blue=0) is selected.
  • Supporting checkbox. New functions: wvw_CXcreate(), wvw_CXdestroy(), wvw_CXsetfocus(), wvw_CXenable(), wvw_CXsetcodeblock(), wvw_CXsetcheck() and wvw_CXgetcheck().
  • Added function kbdShiftsState for using with GTINFO(GTI_KBDSHIFTS).
  • Use FALSE as initial value of EnableShortCuts, to have the same behaviour on ALT key as gtwvt.
  • Fixed function kbdShiftState to static.
  • Added wvw_enableshortcuts(nwinnum, lenable) to enable/disable shortcut behaviour with ALT key.
  • Added sample of using Maximize mode in a gtwvw app: maximize.prg.
  • Added supporting Maximize mode in hbgtwvw.h.
  • Added new functions for centering window in hbgtwvw.h.
  • Added bugfix and enhancement on scrollbar in hbgtwvw.h.
  • wvw_xbshow() to show/hide scroll bar code by Julio Cesar Cantillo Molina.
  • Fix calculation of iNextPos in hb_wvw_gtAddCharToInputQueue() and
    hb_wvw_gtGetCharFromInputQueue(). Resolves problem reported of lost
    input characters.
xHarbour TIP.LIB
  • Small changes to ::Log() code.
  • Fixed a bug in ::Retrieve() which could cause the miss of the end of mail sequence and the report of a timeout error.
  • Added Support to Calling ExGauge From ReadToFile() method.
  • Added Missing ::Commit call to ReadToFile() method.
  • Fixed GetReply() method in FTPcln.prg
© 2024 All rights reserved.
Contact us | Terms of Use Agreement
xHarbour.ORG is maintained by Enrico Maria Giordano
Internet services kindly provided by