FILESCAN statement

Purpose | Rapidly scan a file opened for INPUT or BINARY mode, in order to obtain size information about variable length string data.
Syntax | FILESCAN [#] fnum&, RECORDS TO y& [, WIDTH TO x&]

Remarks

FILESCAN assigns a count of the lines/records/strings to y&, and if the WIDTH clause is specified, the length of the longest string to x&.

In INPUT mode, it is assumed the data is standard text, with lines delimited by a CR/LF ($CRLF) pair. FILESCAN stops reading the file if it encounters an "end of file" (EOF) marker byte ( CHR$(26) or $EOF). Text that occurs after the last CR/LF but before the EOF is considered the last record of the file. Use the LINE INPUT# statement to read a complete text file into an array.

In BINARY mode, it is assumed the file was written in the PowerBASIC and/or VB packed string format using PUT of an entire string array. If a string is shorter than 65535 bytes, a 2-byte length WORD is followed by the string data. If a string is equal to or longer than 65535 bytes, a 2-byte value of 65535 is followed by a length DWORD value, then finally the string data.

Use the GET statement to read a complete binary file into an array.

Restrictions | If FILESCAN is applied to other file formats, the results are undefined.
See also | GET, GET$, GET$$, LINE INPUT#, PUT, PUT$, PUT$$
Example | OPEN "datafile.dat" FOR INPUT AS #1 FILESCAN #1, RECORDS TO count& DIM TheData(1 TO count&) AS STRING LINE INPUT #1, TheData() TO count& CLOSE #1
Result | The entire text file comprising y& lines is read into the string array.