GET - mkilgore/QB64pe GitHub Wiki
The GET # statement reads data from a file or port device by bytes or record positions.
- GET #fileNumber&, [position][,]
- fileNumber& is the file or port 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 GET operations are consecutive based on the targetVariable TYPE byte size.
- The targetVariable type or FIELD variable size determines the byte size and the next position in the file.
- The first byte position in a file is 1.
- GET does not require a byte or record position or targetVariable (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 targetArray() (include brackets).
- GET may ignore the end of a file and return bad data. If the EOF function returns -1 after a GET operation, it indicates that the data has ended.
DO UNTIL [[EOF|EOF]](1) [[GET|GET]] #1, , value% IF [[NOT|NOT]]([[EOF|EOF]](1)) THEN [[PUT|PUT]] #2, , value% LOOP |
Example 1: Opening a RANDOM file using LEN to calculate and LEN = to designate the file record size.
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...NEXT RANDOM AS #1 LEN = RecordLEN% PUT #1, number% , record 'change record position number to add records CLOSE #1 OPEN file$ FOR...NEXT 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.
FOR...NEXT i = 1 TO 100 array(i) = i NEXT showme 'display array contents OPEN "BINFILE.BIN" FOR...NEXT BINARY AS #1 PUT #1, , array() ERASE array 'clear element values from array and display empty showme CLOSE #1 OPEN "BINFILE.BIN" FOR...NEXT BINARY AS #2 GET #2, , array() CLOSE #2 showme 'display array after transfer from file END SUB showme FOR...NEXT 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.
Navigation:
Go to Keyword Reference - Alphabetical
Go to Keyword Reference - By usage
Go to Main WIKI Page