Rapid-Q Documentation by William Yu (c)1999-2000 Appendix A: QFILESTREAM


QFILESTREAM Компонент

QFilestream - компонент для работы с файлами

QFilestream Свойства
ПолеТипR/WПо умолчаниюПоддерживается





EOFINTEGERRWXG
EOF определяет когда указатель текущей позиции достиг конца файла.
HandleINTEGERRW
. ????
LineCountINTEGERRWXG
LineCount определяет сколько строк содержится в текстовом файле. Признаком конца строки считается символ LF (ascii 10), а симво CR игнорируется , поэтому CRLF считается одной строкой, а LFLF - 2 строки.
PositionINTEGERRWWXG
Position - определяет текущую позицию указателя в байтах и операции чтения\записи будут начинаться с этого места.
SizeINTEGERRWXG
Size - определяет размер файла в байтах.


QFilestream Методы
МетодТипОписаниеПараметрыПоддерживается





CloseSUBЗакрывает файл после работы с ним0WXG
CopyFromSUB (Stream, Bytes&)Копирует данные из другого потока
QFileStream или QMemoryStream
Если Bytes&=0 то копируются все данные
2W
Используйте CopyFrom для копирования QFILESTREAM или QMEMORYSTREAM в текущий файл.
Детали:
Если Bytes% = 0 то все данные будут скопированы.
Пример:
$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) '-- Копирует 123 байта из File2
ExtractResSUB (Resource AS LONG)Извлекает ресурсы в файл1WXG
Извлекает ресурсы из вашей програмы в файл
Детали:
Параметр Resource это не указатель на ресурс (resource handle), а абсолютная позиция ресурса в вашей программе. Используйте ключевое слово Resource(n) для указания номера ресурса.
Пример (извлечение в память (dumping) всех ресурсов):
$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
LoadArraySUB (Array(), NumElements&) Считывает данные из файла в массив 2WXG
OpenSUB (FileName$, Mode%)Открывает файл, Mode% см. RAPIDQ.INC '-- File Mode
CONST fmCreate = 65535 ' создать
CONST fmOpenRead = 0 ' только для чтения
CONST fmOpenWrite = 1 ' только для записи
CONST fmOpenReadWrite = 2 ' для чтения и записи
2WXG
ReadSUB (variable) Generic Read, determines the storage space and saves data in variable1WXG
Datasize is automatically determined, and the value is stored into the variable.
Пример:
$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
ReadLineFUNCTION () AS STRINGReads an entire line, supports UNIX files0WXG
ReadNumFUNCTION (Num_Type) AS DOUBLEВозвращает number    '-- ie. PRINT File.ReadNum(Num_SINGLE)
 

Num_Type can be next
CONST Num_BYTE = 1
CONST Num_SHORT = 2
CONST Num_WORD = 3
CONST Num_LONG = 4
CONST Num_DWORD = 5
CONST Num_SINGLE = 6
CONST Num_DOUBLE = 8
 

1WXG
ReadBinStrFUNCTION (n) AS STRINGRead n bytes, returns the binary string1WXG
ReadStrFUNCTION (n) AS STRINGRead n bytes, returns the text string1WXG
ReadUDTSUB (MyType)Read and store data in a MyType structure1WXG
SaveArraySUB (Array(), NumElements&)Save array2WXG
SeekSUB (Position%, From%)Seek to Position%, From% see RAPIDQ.INC
'-- Offsets
CONST soFromBeginning = 0 '-- Seek (offset) from Beginning
CONST soFromCurrent = 1 '-- Seek (offset) from Current position
CONST soFromEnd = 2 '-- Seek (offset) from End
 
2WXG
WriteSUB (variable)Generic Write, determines the storage space and saves data to file1WXG
WriteLineSUB (S AS STRING)Writes string with CR+LF1WXG
WriteNumSUB (number, bytes%)Writes a number to file2WXG
WriteBinStrSUB (string, bytes%)Writes a binary string to file2WXG
WriteStrSUB (string, bytes%)Writes a text string to file (fast)2WXG
WriteUDTSUB (MyType)Write data stored in a MyType structure1WXG


QFileStream Примеры
  $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)


Предыдущий Компонент Содержание Следующий Компонент