From QB64 Wiki
Revision as of 16:07, 7 February 2021 by Dkearns (talk | contribs) (Add page sections)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search

A REDIM statement can re-dimension one dynamic(flexible) array or a comma separated list of arrays.


REDIM [_PRESERVE] [SHARED] ArrayName[typesuffix] ({max_element|low_element[TO upper_element, ...]}) [AS Type]
REDIM [_PRESERVE] [SHARED] [AS Type] ArrayName({max_element|low_element[TO upper_element, ...]})


  • Can change the number of elements in an array (the present array data is lost unless _PRESERVE is used).
  • Dynamic array elements can also be sized or resized by a program user's entry.
  • The _PRESERVE option also allows the element range values to be moved upward or downward.
  • Array is the name of the array to be dimensioned or re-dimensioned.
  • elements is the number of elements the array should hold. Use the optional TO elements2 to set a range.
  • Always use the same array TYPE suffix (AS type) or a new array type with the same name may be created.
  • REDIM cannot change $STATIC arrays created with a DIM statement unless the $DYNAMIC metacommand is used.
  • To create a dynamic array use the $DYNAMIC metacommand or use REDIM rather than DIM when first creating the array.
  • Use REDIM _PRESERVE to change the range or number of array elements without losing the remaining elements. Data may move up or down to accommodate those boundary changes.
  • REDIM _PRESERVE cannot change the number of array dimensions or type.
  • Dynamic arrays MUST be REDIMensioned if ERASE or CLEAR are used to clear the arrays as they no longer exist.
  • When AS is used to declare the type, use AS to retain that type or it will change to SINGLE!
  • Warning! Do not use negative array upper bound index values as OS access or "Out of Memory" errors will occur.
  • When using the AS type variable-list syntax, type symbols cannot be used.


Example 1: The $DYNAMIC metacommand allows an array to be re-sized using DIM and REDIM.

'$DYNAMIC INPUT "Enter array size: ", size DIM Array(size) REDIM Array(2 * size) PRINT UBOUND(Array)

Example 2: Shows the difference between REDIM and REDIM _PRESERVE.

REDIM array(20) array(10) = 24 PRINT array(10) REDIM _PRESERVE array(30) PRINT array(10) REDIM array(15) PRINT array(10)

24 24 0

Explanation: REDIM without _PRESERVE erases the array data and cannot change the number of dimensions.

See also

Keyword Reference - Alphabetical
Keyword Reference - By Usage
Main Wiki Page