Appendix A: QFILESTREAM
Rapid-Q Documentation by William Yu (c)1999-2000 |
Appendix A: QFILESTREAM |
|
QFILESTREAM Component
QFilestream is Rapid-Q's way of handling files. It's more elegant than the
GET, and PUT method of traditional BASIC.
QFilestream Properties
Field | Type | R/W | Default | Support |
|
|
|
|
|
EOF | INTEGER | R | | WXG |
| EOF specifies whether the file pointer has reached the end of file.
|
Handle | INTEGER | R | | W |
LineCount | INTEGER | R | | WXG |
| LineCount determines how many lines there are in the file. Note that
LineCount ignores the CR character, and will only detect LF, so it treats CRLF as one line, but LFLF as 2 lines.
|
Position | INTEGER | RW | | WXG |
| Position specifies the current position of the file pointer, any read/write operations will begin from here.
|
Size | INTEGER | R | | WXG |
| Size determines the size of the file in bytes.
|
QFilestream Methods
Method | Type | Description | Params | Support |
|
|
|
|
|
Close | SUB | Close the stream | 0 | WXG |
CopyFrom | SUB (Stream, Bytes%) | Copy from another stream Either QFileStream or QMemoryStream If Bytes%=0 then the whole stream is copied | 2 | W |
| Use CopyFrom to copy a QFILESTREAM or a QMEMORYSTREAM to the current filestream.
Details:
If Bytes% = 0 then the Stream is reset to position 0 and the whole stream is then copied.
Example:
$INCLUDE "RAPIDQ.INC"
DIM File1 AS QFILESTREAM
DIM File2 AS QFILESTREAM
File1.Open("test.txt", fmCreate)
File2.Open("oldtest.txt", fmOpenRead)
File1.CopyFrom(File2, 123) '-- Copy 123 bytes from File2
|
ExtractRes | SUB (Resource AS LONG) | Extract resource to filestream | 1 | WXG |
| Extracts a resource from your program to the filestream.
Details:
The parameter Resource is not the resource handle, but the absolute position of the resource within your file.
This requires that you use the keyword Resource(n) to specify the resource number.
Example (dumping all resources):
$INCLUDE "RAPIDQ.INC"
$RESOURCE res_1 as "res.1"
$RESOURCE res_2 as "res.2"
DIM File1 AS QFILESTREAM
File1.Open("test.txt", fmCreate)
FOR I = 0 TO ResourceCount-1
File1.ExtractRes(Resource(I))
NEXT
|
LoadArray | SUB (Array(), NumElements&) | Load data into array | 2 | WXG |
Open | SUB (FileName$, Method%) | Open a file, Method% see RAPIDQ.INC | 2 | WXG |
Read | SUB (variable) | Generic Read, determines the storage space and saves data in variable | 1 | WXG |
| Datasize is automatically determined, and the value is stored into the variable.
Example:
$INCLUDE "RAPIDQ.INC"
DIM File1 AS QFILESTREAM
DIM B AS BYTE, I AS INTEGER
File1.Open("test.txt", fmOpenRead)
File1.Read(B) '-- Read a byte
File1.Read(I) '-- Read an integer
|
ReadLine | FUNCTION () AS STRING | Reads an entire line, supports UNIX files | 0 | WXG |
ReadNum | FUNCTION (n) AS DOUBLE | Read n bytes, returns number | 1 | WXG |
ReadBinStr | FUNCTION (n) AS STRING | Read n bytes, returns the binary string | 1 | WXG |
ReadStr | FUNCTION (n) AS STRING | Read n bytes, returns the text string | 1 | WXG |
ReadUDT | SUB (MyType) | Read and store data in a MyType structure | 1 | WXG |
SaveArray | SUB (Array(), NumElements&) | Save array | 2 | WXG |
Seek | SUB (Position%, From%) | Seek to Position%, From% see RAPIDQ.INC | 2 | WXG |
Write | SUB (variable) | Generic Write, determines the storage space and saves data to file | 1 | WXG |
WriteLine | SUB (S AS STRING) | Writes string with CR+LF | 1 | WXG |
WriteNum | SUB (number, bytes%) | Writes a number to file | 2 | WXG |
WriteBinStr | SUB (string, bytes%) | Writes a binary string to file | 2 | WXG |
WriteStr | SUB (string, bytes%) | Writes a text string to file (fast) | 2 | WXG |
WriteUDT | SUB (MyType) | Write data stored in a MyType structure | 1 | WXG |
QFileStream Examples
$INCLUDE "RAPIDQ.INC"
DIM File AS QFileStream
File.Open("test.bas", fmOpenRead)
S$ = File.ReadStr(File.Size) '' Read entire file
PRINT S$ '' print it
File.Close
'------------------------------------------------------
$INCLUDE "RAPIDQ.INC"
TYPE MyType
Name AS STRING*30
Phone AS STRING*8
Age AS INTEGER
END TYPE
DIM Person AS MyType
Person.Name = "Joe"
Person.Phone = "555-5555"
DIM File AS QFileStream
File.Open("test", fmCreate)
File.WriteUDT(Person)
|
|