QB64.com

QB64 is a modern extended BASIC programming language that retains QBasic/QuickBASIC 4.5 compatibility and compiles native binaries for Windows, Linux, and macOS.

The _PRESERVE REDIM action preserves the current contents of $DYNAMIC arrays, when resizing or changing indices.

Syntax

REDIM _PRESERVE array(newLowerIndex& [TO newUpperIndex&]) [AS variabletype]

Description

Error(s)

Example(s)

Changing the upper and lower array bounds


REDIM a(5 TO 10) ' create array as dynamic using REDIM
a(5) = 123
REDIM _PRESERVE a(20 TO 40) 
PRINT a(20)

Explanation: a(20) is now the 123 value a(5) was. The upper or lower bounds of arrays can be changed, but the type cannot. New array indices like a(40) are null(0) or empty strings. If the array element count is not reduced, all of the data will be preserved.

Sizing an array while storing file data.


REDIM Array$(1)                'create a dynamic string array
filename$ = "Readme.txt"       'Qb64 information text file
OPEN filename$ FOR INPUT AS #1
DO UNTIL EOF(1)
  count = count + 1
  IF count > UBOUND(Array$) THEN
    REDIM _PRESERVE Array$(count * 3 / 2)'increase array's size by 50% without losing data
  END IF

  LINE INPUT #1, textline$
  Array$(count) = textline$
LOOP
CLOSE #1 
FOR c = 1 TO count
PRINT Array$(c)
IF c MOD 20 = 0 THEN k$ = INPUT$(1)
NEXT 
END 

See Also