PUT: Difference between revisions

From QB64 Phoenix Edition Wiki
Jump to navigation Jump to search
No edit summary
No edit summary
 
(One intermediate revision by the same user not shown)
Line 16: Line 16:
* '''Warning: Not designating a PUT position can overwrite previous file data based on the current file ''position''!'''
* '''Warning: Not designating a PUT position can overwrite previous file data based on the current file ''position''!'''
* When using a numeric ''holding variable'', values do NOT require conversion using [[MKI$]], [[MKL$]], [[MKS$]] or [[MKD$]].
* When using a numeric ''holding variable'', values do NOT require conversion using [[MKI$]], [[MKL$]], [[MKS$]] or [[MKD$]].
* '''QB64''' can load [[Arrays|array]] data directly(brackets required) to a [[BINARY]] file using '''one''' PUT to a [[BINARY]] file: '''{{text|PUT #1, , array()|green}}'''
* '''QB64''' can load [[Arrays|array]] data directly(brackets required) to a [[BINARY]] file using '''one''' PUT to a [[BINARY]] file: '''{{Text|PUT #1, , array()|green}}'''




Line 81: Line 81:
{{PageSeeAlso}}
{{PageSeeAlso}}
* [[GET|GET #]]
* [[GET|GET #]]
* [[SEEK]], [[SEEK (statement)]]
* [[SEEK]], [[SEEK (function)]]
* [[PRINT (file statement)|PRINT  #]]
* [[PRINT (file statement)|PRINT  #]]
* [[FIELD]]
* [[FIELD]]

Latest revision as of 23:53, 24 February 2023

The PUT # file or port statement writes data to a specific byte or record location.


Syntax

PUT #filenumber&, [position][, {holdingvariable|holdingarray()}]


  • File/port number is the number used in the OPEN statement.
  • The INTEGER or LONG file byte position in a BINARY file or the record position in a RANDOM file must be greater than zero.
  • The file byte or record position can be omitted if the PUT or GET is consecutive or when creating new file data sequentially.
  • The holding variable type determines byte size and the next byte position in the file when the position is ommitted.
  • The first byte or record position is 1. This may require adding one to an offset value when documentation uses that position as 0.
  • Both the file position and holding variable(and comma) can be omitted when using a FIELD definition.
  • If a LEN = record length statement is omitted in an OPEN FOR RANDOM statement the record size defaults to 128 bytes!
  • Warning: Not designating a PUT position can overwrite previous file data based on the current file position!
  • When using a numeric holding variable, values do NOT require conversion using MKI$, MKL$, MKS$ or MKD$.
  • QB64 can load array data directly(brackets required) to a BINARY file using one PUT to a BINARY file: PUT #1, , array()


Example 1: Using a TYPE record variable(Contact) to enter a new RANDOM record to a file.

TYPE ContactType
  first AS STRING * 10
  last AS STRING * 20
  age AS INTEGER
END TYPE
DIM Contact AS ContactType

INPUT "Enter a first name: ", Contact.first
INPUT "Enter a last name: ", Contact.last
INPUT "Enter an age: ", Contact.age

OPEN "Record.lst" FOR RANDOM AS #1 LEN = LEN(Contact)
NumRecords% = LOF(1) \ LEN(Contact)
PRINT NumRecords%; "previous records"

PUT #1, NumRecords% + 1, Contact ' add a new record TYPE record value
CLOSE #1
Note: The DOT record variable values were created or changed before the PUT. The record length is 32 bytes.


Example 2: 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.

More Examples


See also



Navigation:
Main Page with Articles and Tutorials
Keyword Reference - Alphabetical
Keyword Reference - By usage
Report a broken link