Harbour Differences

Differences between Harbour and other compatible compilers ( xHarbour, Clipper, xBase++, CLIP, FlagShip )

 

Compile time support for merging multiple .prg modules
New language statements
FOR EACH
WITH OBJECT / END[WITH]
SWITCH / [ CASE / [EXIT] / … ] OTHERWISE / END[SWITCH]
BEGIN SEQUENCE [ WITH <ERRBLOCK> ] … END SEQUENCE
Extended codeblocks
Hash arrays
References to variables stored in arrays
Passing array and hash items by reference
Passing object variables by reference
Detached locals and references
Declaration and initialization of variables
Functions with variable number of parameters
Hb_ArrayToParams() function
Macros with declared symbols
Macro messages
Multivalue macros
Using [] operator for string items
Negative indexes in [] operator used to access items from tail
Using one character length string as numeric value
New bit operators
IN, HAS, LIKE operators
Pre/post incrementation/decrementation and <op>= operators
Global / global external (global_extern)
DATETIME/TIMESTAMP values
Literal date and TIMESTAMP values
Extended literal string in compiler and macrocompiler
Symbol items and function references
OOP scopes
OOP and multiinheritance
OOP and private/hidden datas
OOP and class object/class messages
Typed object variables
Object destructors
Scalar classes
Runtime class modification
Array and string preallocation
DIVERT statement
Namespaces
Multi window GTs and runtime GT switching
Multi thread support
Thread local work areas and concurrent work area access
Harbour tasks and MT support in DOS
Background task
Codeblock serialization / deserialization
Native RDDs
Regular expressions
INET sockets
I18N (internationalization) support
ZLIB (compression/decompression)
Serial port support
Macro compiler
Compiler library
PP library
Lexer
Contrib libraries
Portability
C level compatibility
HBRUN / XBSCRIPT
HBMK2
Performance and resource usage

This list borrowed from Harbour github documentation; please look at there for details.

 

Advertisements

hb_HValueAt()

HB_HVALUEAT()

Gets/sets a hash value at a given position

Syntax

      HB_HVALUEAT( <hsTable>, <nPosition>, [<NewValue>] ) -> <Value>

Arguments

<hsTable> a hash table, created by HB_HASH()

<nPosition> the position of an entry within the hash table that will be returned

<NewValue> a new value to be assigned to the hash table at the given position

Returns

The existing value, or the new value if it is given

Compliance

Harbour

hb_HSet()

HB_HSET()

Sets a hash value

Syntax

      HB_HSET( <hsTable>, <Key>, <Value> ) -> <hsTable>

Arguments

<hsTable> a hash table, created by HB_HASH()

<Key> the key of the entry to be set; can be of type: number, date, datetime, string, pointer

<Value> the entry value

Returns

The hash table

Compliance

Harbour

hb_HScan()

HB_HSCAN()

Scans a hash table

Syntax

      HB_HSCAN( <hsTable>, <Value>, [<nStart>], [<nCount>, [<lExact>] )
                -> nPosition

Arguments

<hsTable> a hash table, created by HB_HASH()

<Value> to be located within the hash table

<nStart> starting index, defaults to 1 if omitted

<nCount> counter, defaults to (length) – <nStart> is omitted

<lExact> logical valuye indicating whether the comparision is to be be exact or not

Returns

The position of the located value within the hash table, or zero (0) if not found.

Compliance

Harbour

hb_HPos()

HB_HPOS()

Locates the index of a key within a hash table

Syntax

      HB_HPOS( <hsTable>, <Key> ) -> nPosition

Arguments

<hsTable> a hash table, created by HB_HASH()

<Key> key for which its position is to be determined; can be of type: number, date, datetime, string, pointer

Returns

A integer number being the index position of the key within the hash table.

Compliance

Harbour