From QB64 Wiki
Revision as of 17:03, 26 August 2012 by imported>Clippy
Jump to navigation Jump to search

The GET # file or port device statement reads data by bytes or record positions.


GET #filenumber%, [position][, {holdingvariable|holdingarray()}]

  • File/port number is the file number used in the OPEN AS BINARY or RANDOM statement.
  • The INTEGER or LONG byte position in a BINARY file or the record position in a RANDOM file must be greater than zero.
  • The position can be omitted if the GETs are consecutive based on the holding variable TYPE byte size.
  • The holding variable TYPE or FIELD variable size determines the byte size and the next position in the file.
  • The first file position is 1. This may require adding one to an offset value when documentation uses that position as 0.
  • GET does NOT require a byte or record position or holding variable(or comma) when using a FIELD statement!
  • QB64 can PUT the entire contents of an array to a file and later GET those contents to a holding array(include brackets).
  • GET can ignore an EOF statement and return bad data! EOF after a GET denotes that the data is bad!

Example 1: Checking for End of File before transferring individual GET data.

DO UNTIL EOF(1) GET #1, , value% IF NOT(EOF(1)) THEN PUT #2, , value% LOOP

Example 2: Using a TYPE record variable to read a TYPE record(Contact).

OPEN file$ FOR RANDOM as #1 LEN = LEN(Contact) IF record% <= LOF(1) \ LEN(Contact) THEN GET #1, record%, Contact CLOSE #1

Note: The Contact record contains all of the DOT variable types listed in the TYPE.

Example 3: Restoring array data from a BINARY file using GET # in QB64 only.

DIM myarray(80000) AS INTEGER OPEN "myfile.ext" FOR BINARY AS #1 GET #1, , myarray() CLOSE #1

Note: The file data must have been previously stored in the file using PUT # the same way!

See also:

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