FilePos (указатель_на_файл)
Параметры
указатель_на_файл = переменная, определенная командой
ReadFile,
WriteFile или
OpenFile. Возвращаемое значение – смещение от начала файла (0 = начало файла)
Описание
Эта команда возвращает текущую позицию внутри обрабатываемого файла после его открытия командой
ReadFile,
WriteFile или
OpenFile.
Integer-число, возвращенное функцией, является смещением в байтах от начала файла до текущей позиции чтения/записи. Значение 0 указывает на начало файла.
Используя
FilePos и
SeekFile, можно определить и изменить позицию внутри файла, который открыт для чтения или записи. Это позволяет прочитать и изменить файл без необходимости создания его копии или работы через весь файл последовательно. Может пригодиться, если вы создали файл с базой данных и хотите найти и изменить только несколько записей в нем. Также возможно создать файл, который содержит указатели на места, где начинается каждая запись в файле данных.
Пример
; Правка фрагмента файла, используя OpenFile, SeekFile, FilePos
; примечание: FilePos используется в функции SearchFile в конце этого примера
; Открыть/создать файл для записи
fileout = WriteFile("mydata.dat")
; Записать информацию в файл
WriteInt( fileout, 1 )
WriteInt( fileout, 2 )
WriteInt( fileout, 3 )
WriteInt( fileout, 4 )
WriteInt( fileout, 5 )
; Закрыть файл
CloseFile( fileout )
DisplayFile( "Файл без изменений", “mydata.dat" )
Position = SearchFile( 4 , "mydata.dat" )
Write "Значение 4 было найдено "
Write Position
Print " байт от начала."
Print
; Открыть файл и изменить значение 3 на 9999
file = OpenFile("mydata.dat")
SeekFile( file, Position ); Перейти к найденному месту
WriteInt( file, 9999 ); Заменить значение на 9999
CloseFile( file )
DisplayFile( "Файл после правки", "mydata.dat" )
WaitKey()
End; Конец программы
; **** Определения функций ****
; Прочитать файл и вывести содержимое на экран
Function DisplayFile( Tittle$, Filename$ )
Print tittle$
file = ReadFile( Filename$ )
While Not Eof( file )
Number = ReadInt( file )
Print Number
Wend
CloseFile( file )
Print
End Function
; Просмотреть файл с integer-числами, чтобы найти искомое значение
; Не забывайте вычитать 4 из позиции после прочтения значения
; теперь мы указываем на следующее integer-число
; также мы поместили Return() после закрытия файла, и теперь файл закрыт правильно
Function SearchFile( Wanted, Filename$ )
file = ReadFile( Filename$ )
While Not Eof( file )
If ReadInt( file ) = Wanted Then Location = FilePos( file ) - 4
Wend
CloseFile( file )
Return( Location )
End Function