| указатель_на_файл = переменная, определенная командой 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 " байт от начала." ; Открыть файл и изменить значение 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 ) 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 |