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  

Главная страница

Нажмите сюда, чтобы увидеть последнюю версию этой страницы в Интернете