Показать сообщение отдельно
Старый 03.09.2005, 18:55   #6
alcosholik
 
Сообщений: n/a
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
 
Ответить с цитированием