DICTIONARY RapidQ Basic to HotBasic



Artwork by Don

Dec 28, 2004

HotBasic™ Compiler Copyright 2003-2006 James J Keene PhD. All Rights Reserved.

RapidQ Basic keywords translated to HotBasic.

$INCLUDE "RapidQ.inc"
RQ: Used by compiler to resolve undefined symbols.
HB: $INCLUDE "RapidQ.inc" is the kiss of death, not to mention "Windows.inc". RQ uses these files to clean up unresolved symbols. HB compiles them all!
Cut and paste only what you need in a particular program. Use of RapidQ.inc produces a Warning ErrorLevel.

RQ: Provides several functions not implemented in HB.
HB: Is similar to $DEFINE symbol1 symbol2 and used for text substitution during compiling. If symbol1 has embedded spaces, it must be placed inside quotes. symbol2 may be an expression with embedded spaces.

HB: one or more comma-delimited user symbols are removed from the $DEFINE list and if present as symbol1 in the $DEFINE/$MACRO lists, the pair of symbol1 and symbol2 are also removed from those lists. This allows user symbol redefinition on-the-fly during compiling.

RQ: Conversion of user symbols to uppercase is default and the only option.
HB: Default is case-sensitive user symbols. If OFF, variable k is not equal to K and MyVar is not equal to myvar is not equal to MYVAR, etc.
Unlike RapidQ, at present, $UPPERCASE ON may prevent compilation of API code since API function names are case-sensitive.

RQ: Required to call SUBs within certain IF ... THEN ... ELSE ... END IF code blocks, else your code will not work.
HB: Not required.

RQ: Author could never get it to work.
HB: Works; very useful.

LIST object .AddItems, .Item(), .IndexOf()
RQ: QStringList apparently uses OS "atoms". .Item() length is limited to about 255 bytes. Another feature of "atoms" is that .IndexOf() lookup is not case-sensitive.
HB: No limit to .Item length, since HB does all LIST functions itself rather than going "hat in hand" to the OS. .IndexOf() lookup is case-sensitive.

RQ: returns 0 for *not* equal
HB: returns 1 or -1 for *not* equal

Memory Leaks
RQ: 4 bytes lost for each SUB or FUNCTION call. This adds up to many megabytes with repeated calls and prevents use of RQ in professional applications or for distribution.
HB: None known.

HB: RapidQ objects (or components) supported by HB are automatically detected by HB. Ex. QForm is FORM, QStringList is LIST, QStringGrid is GRID, etc. Thus, RQ object types in RQ source code may be used without editing.

SOCKET .Connect
RQ: Implements blocking socket functions.
HB: Conforms to professional standards for .Connect (please see arguments used) and other SOCKET functions including non-blocking SOCKET calls.

RQ: Author use of DIM A(99) As STRING*16 causes crash at run-time. The [*n] syntax seems to be the problem.
HB: "As STRING*n" syntax works.

TYPE structures
RQ: Contiguous ram allocation for TYPE members not guaranteed. This may make it impossible to use a TYPE structure address as an argument in API calls.
HB: Contiguous ram allocation for TYPE members.

Copyright © 2004 James J. Keene PhD
HotBasic™ is a trademark of James J Keene
Original Publication: Dec 28, 2004