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 GET # statement reads data from a file or port device by bytes or record positions.

Syntax

GET #fileNumber&, [position][, {targetVariable targetArray()}]

Description


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

Example(s)

Opening a RANDOM file using LEN to calculate and LEN = to designate the file record size.


TYPE variabletype
  x AS INTEGER'       '2 bytes
  y AS STRING * 10'  '10 bytes
  z AS LONG'          '4 bytes
END TYPE'            '16 bytes total
DIM record AS variabletype
DIM newrec AS variabletype

file$ = "testrand.inf" '<<<< filename may overwrite existing file
number% = 1 '<<<<<<<<<< record number to write cannot be zero
RecordLEN% = LEN(record)
PRINT RecordLEN%; "bytes"
record.x = 255
record.y = "Hello world!"
record.z = 65535
PRINT record.x, record.y, record.z

OPEN file$ FOR RANDOM AS #1 LEN = RecordLEN%
PUT #1, number% , record 'change record position number to add records
CLOSE #1

OPEN file$ FOR RANDOM AS #2 LEN = RecordLEN%
NumRecords% = LOF(2) \ RecordLEN%
PRINT NumRecords%; "records"

GET #2, NumRecords% , newrec 'GET last record available
CLOSE #2
PRINT newrec.x, newrec.y, newrec.z

END 


 16 bytes
 255        Hello worl       65535
 1 records
 255        Hello worl       65535

Explanation: The byte size of the record TYPE determines the LOF byte size of the file and can determine the number of records. To read the last record GET the number of records. To add a record, use the number of records + 1 to PUT new record data.

Placing the contents of a numerical array into a BINARY file. You may want to put the array size at the beginning too.


DIM SHARED array(100) AS INTEGER

FOR i = 1 TO 100
  array(i) = i
NEXT
showme  'display array contents

OPEN "BINFILE.BIN" FOR BINARY AS #1

PUT #1, , array()

ERASE array 'clear element values from array and display empty
showme
CLOSE #1

OPEN "BINFILE.BIN" FOR BINARY AS #2
GET #2, , array()
CLOSE #2
showme  'display array after transfer from file

END

SUB showme
FOR i = 1 TO 100
  PRINT array(i);
NEXT
PRINT "done"
END SUB 

Note: Use empty brackets in QB64 when using GET to create an array or PUT to create a BINARY data file.

See Also