forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Переводы (http://forum.boolean.name/forumdisplay.php?f=37)
-   -   Перевод хелпа - File (http://forum.boolean.name/showthread.php?t=2)

alcosholik 03.09.2005 18:50

Полный перевод раздела Command Reference -> 2D-Category -> File из стандартного хелпа Blitz.

alcosholik 03.09.2005 18:51

OpenFile (файл$)

Параметры
файл$ = любой допустимый путь и имя файла. Возвращаемое значение – указатель на файл, который используется другими файловыми командами

Описание
Эта команда открывает определенный файл и подготавливает его для изменений. Файл должен существовать, так как функция не создаст новый.

Используя FilePos и SeekFile, можно определить и изменить позицию внутри файла, который открыт для чтения или записи. Это позволяет прочитать и изменить файл без необходимости создания его копии или работы через весь файл последовательно. Может пригодиться, если вы создали файл с базой данных и хотите найти и изменить только несколько записей в нем.

Указатель на файл, который возвращает функция, это integer-число. Оно используется операционной системой для определения, какой именно файл надо прочитать и записать, и может быть использовано в таких функциях, как ReadInt() и WriteInt().

Примечание: нужно проявлять большую осторожность при изменении файлов, которые содержат строки (тип string), так как у них нет фиксированной длины.

См. также: ReadFile, WriteFile, CloseFile, SeekFile.

Пример
Код:

; Правка фрагмента файла, используя OpenFile, SeekFile и WriteInt

; Открыть/создать файл для записи
fileout = WriteFile("mydata.dat")

; Записать информацию в файл
WriteInt( fileout, 1 )
WriteInt( fileout, 2 )
WriteInt( fileout, 3 )
WriteInt( fileout, 4 )
WriteInt( fileout, 5 )

; Закрыть файл
CloseFile( fileout )

DisplayFile( "Файл без изменений", “mydata.dat" )
; Открыть файл и изменить третье integer-число

file = OpenFile("mydata.dat")
SeekFile( file, 8 ); Переместиться к третьему integer-числу в файле
WriteInt( file, 9999 ); Заменить его значение на 9999
CloseFile( file )

DisplayFile( "Файл после правки", "mydata.dat" )
WaitKey()

; **** Определения функций ****

; Прочитать файл и вывести содержимое на экран
Function DisplayFile( Tittle$, Filename$ )
Print tittle$
filein = ReadFile( Filename$ )
While Not Eof( filein )
Number = ReadInt( filein )
Print Number
Wend
CloseFile( filein )
Print
End Function


alcosholik 03.09.2005 18:52

ReadFile (файл$)

Параметры
файл$ = любой допустимый путь и имя файла. Возвращаемое значение – указатель на файл, который является целым значением (integer-число)

Описание
Эта команда открывается определенный файл и подготавливает его для чтения. Используйте ее для чтения ваших файлов конфигурации, сохраненных данных игры и т.п. Она также полезна для считывания пользовательских типов данных из файла. Указатель на файл, который возвращает функция, является integer-числом. Операционная система использует его для определения, из какого именно файла надо считывать. Указатель на файл также должен быть использован с такими функциями, как ReadInt(). Если не удалось открыть файл (например, если он не существует), указатель на файл будет равен 0.

Пример
Код:

; Считывание и запись пользовательских типов в файлы, используя ReadFile, WriteFile и CloseFile

; Инициализация некоторых переменных для примера
Type HighScore
Field Name$
Field Score%
Field Level%
End Type

Best.HighScore = New HighScore
BestName = "Марк"
BestScore = 11657
BestLevel = 34

; Открыть файл для записи
fileout = WriteFile("mydata.dat")

; Записать информацию в файл
WriteString( fileout, BestName )
WriteInt( fileout, BestScore )
WriteByte( fileout, BestLevel )

; Закрыть файл
CloseFile( fileout )

; Открыть файл для считывания
filein = ReadFile("mydata.dat")

; Считать наилучший результат (score) из файла
Greatest.HighScore = New HighScore
GreatestName$ = ReadString$( filein )
GreatestScore = ReadInt( filein )
GreatestLevel = ReadByte( filein )

; Закрыть файл, как только считывание закончилось
CloseFile( filein )

Print "Рекорд (HighScore), считанный из файла mydata.dat "
Print
Write "Name = "
Print GreatestName
Write "Score = "
Print GreatestScore
Write "Level = "
Print GreatestLevel

WaitKey()


alcosholik 03.09.2005 18:53

WriteFile (файл$)

Параметры
файл$ = любой допустимый путь и имя файла. Возвращаемое значение – указатель на файл, который является целым значением (integer-число)

Описание
Эта команда открывается определенный файл и подготавливает его для записи. Используйте ее для записи собственных файлов конфигурации, сохранения данных игры и т.п. Она также полезна для записи пользовательских типов данных в файл. Указатель на файл, который возвращает функция, является integer-числом. Операционная система использует его для определения, из какого именно файла надо считывать. Указатель на файл также должен быть использован с такими функциями, как WriteInt().Если не удалось открыть файл, указатель на файл будет равен 0.

Пример
Код:

; Считывание и запись пользовательских типов в файлы, используя ReadFile, WriteFile и CloseFile

; Инициализация некоторых переменных для примера
Type HighScore
Field Name$
Field Score%
Field Level%
End Type

Best.HighScore = New HighScore
BestName = "Марк"
BestScore = 11657
BestLevel = 34

; Открыть файл для записи
fileout = WriteFile("mydata.dat")

; Записать информацию в файл
WriteString( fileout, BestName )
WriteInt( fileout, BestScore )
WriteByte( fileout, BestLevel )

; Закрыть файл
CloseFile( fileout )

; Открыть файл для считывания
filein = ReadFile("mydata.dat")

; Считать наилучший результат (score) из файла
Greatest.HighScore = New HighScore
GreatestName$ = ReadString$( filein )
GreatestScore = ReadInt( filein )
GreatestLevel = ReadByte( filein )

; Закрыть файл, как только считывание закончилось
CloseFile( filein )

Print "Рекорд (HighScore), считанный из файла mydata.dat "
Print
Write "Name = "
Print GreatestName
Write "Score = "
Print GreatestScore
Write "Level = "
Print GreatestLevel

WaitKey()


alcosholik 03.09.2005 18:54

CloseFile указатель_на_файл

Параметры
указатель_на_файл = переменная, определенная командой ReadFile, WriteFile или OpenFile

Описание
Используйте эту команду для закрытия ранее открытого файла. Вам следует всегда закрывать файл, как только вы закончили работать с ним.

Пример
Код:

; Считывание и запись пользовательских типов в файлы, используя ReadFile, WriteFile и CloseFile

; Инициализация некоторых переменных для примера
Type HighScore
Field Name$
Field Score%
Field Level%
End Type

Best.HighScore = New HighScore
BestName = "Марк"
BestScore = 11657
BestLevel = 34

; Открыть файл для записи
fileout = WriteFile("mydata.dat")

; Записать информацию в файл
WriteString( fileout, BestName )
WriteInt( fileout, BestScore )
WriteByte( fileout, BestLevel )

; Закрыть файл
CloseFile( fileout )

; Открыть файл для считывания
filein = ReadFile("mydata.dat")

; Считать наилучший результат (score) из файла
Greatest.HighScore = New HighScore
GreatestName$ = ReadString$( filein )
GreatestScore = ReadInt( filein )
GreatestLevel = ReadByte( filein )

; Закрыть файл, как только считывание закончилось
CloseFile( filein )

Print "Рекорд (HighScore), считанный из файла mydata.dat "
Print
Write "Name = "
Print GreatestName
Write "Score = "
Print GreatestScore
Write "Level = "
Print GreatestLevel

WaitKey()


alcosholik 03.09.2005 18:55

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


alcosholik 03.09.2005 18:56

SeekFile (указатель_на_файл, смещение)

Параметры
указатель_на_файл = переменная, определенная командой ReadFile, WriteFile или OpenFile. Возвращаемое значение – смещение от начала файла (0 = начало файла)

Описание
Эта команда позволяет изменить позицию в файле. Команда делает возможным прямой доступ к любым данным внутри файлов и может быть использована с файлами, открытыми командой ReadFile, WriteFile или OpenFile. Заметьте, что смещение – это количество байтов от начала файла. Важно принимать во внимание размер элементов данных в вашем файле.

К примеру, переменные типа integer имеют длину 4 байта, т.е. первое integer-число в файле имеет позицию со смещением 0, второе – со смещением 4. Если вы перезаписываете пользовательские типы данных, вы должны узнать, сколько байтов занимает каждый из них, чтобы можно было перемещаться по файлу корректно. Поиск за пределами конца файла не выдаст ошибку, но данные не будут считаны или записаны в файл, могут появиться неизвестные побочные эффекты.

Используя FilePos и SeekFile, можно определить и изменить позицию внутри файла, который открыт для чтения или записи. Это позволяет прочитать и изменить файл без необходимости создания его копии или работы через весь файл последовательно. Может пригодиться, если вы создали файл с базой данных и хотите найти и изменить только несколько записей в нем. Также возможно создать файл, который содержит указатели на место, где начинается каждая запись в файле с данными.

Чтобы подсчитать смещение, вам нужно знать длину каждого элемента данных:
смещение = искомый_элемент * размер_элемента – размер_элемента

Для примера, файл с integer-числами, длина которых по 4 байта, подсчитывается так:
7-е число имеет позицию со смещением 7 * 4 – 4, т.е. 24

Примечание: нужно проявлять большую осторожность при изменении файлов, которые содержат строки (тип string), так как у них нет фиксированной длины.

Пример
Код:

; Правка фрагмента файла, используя OpenFile, SeekFile и FilePos

; Открыть/создать файл для записи
fileout = WriteFile("mydata.dat")

; Записать информацию в файл
WriteInt( fileout, 100 )
WriteInt( fileout, 200 )
WriteInt( fileout, 300 )
WriteInt( fileout, 400 )
WriteInt( fileout, 500 )

; Закрыть файл
CloseFile( fileout )

DisplayFile( "Файл без изменений", mydata.dat" )

Print "Считывание данных в случайном порядке"
; Открыть файл, чтобы считать из него только 4-й и 2-й элементы

file = OpenFile("mydata.dat")

; Считать и вывести на экран 4-е integer-число, т.е. 4*4-4 = 12 байт от начала файла
SeekFile( file, 12 ); Сместиться к нужной позиции
Number = ReadInt( file )
Print Number

; Считать и вывести на экран 2-е integer-число, т.е. 2*4-4 = 4 байта от начала файла
SeekFile( file, 4 ); Сместиться к нужной позиции
Number = ReadInt( file )
Print Number

CloseFile( file )

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


alcosholik 03.09.2005 18:57

ReadDir (директория)

Параметры
директория = полный путь и имя директории/каталога для открытия

Описание
В операциях с файлами вам часто потребуется просматривать всю директорию/каталог и отыскивать файлы или папки, не зная их имен. Эта команда открывает заданный каталог для проделывания операций, описанных выше. Возвращает указатель на файл, который используется другими командами для выполнения других операций над файлами. Нужно использовать NextFile$, чтобы переходить к следующему объекту (используйте FileType, чтобы узнать файл это или папка). Запомните, хороший стиль программирования требует закрытия (CloseDir) открытой директории после завершения работы с ней. Пример должен помочь разобраться.

Пример
Код:

; ReadDir/NextFile$/CloseDir – пример использования

; Определить, с какой директории начать
folder$="C:"

; Открыть директорию и сохранить указатель в myDir
myDir=ReadDir(folder$)

; Будем повторять бесконечно, пока не кончатся файлы/папки в заданной директории
Repeat
; Назначить следующий объект в директории переменной file$
file$=NextFile$(myDir)

; Если такового нет, выйти из цикла
If file$="" Then Exit

; Использовать FileType, чтобы определить является объект папкой или файлом, и вывести результаты
If FileType(folder$+""+file$) = 2 Then
Print "Folder:" + file$
Else
Print "File:" + file$
End If
Forever

; Правильно закрыть директорию
CloseDir myDir

; Вот и все!
Print "Закончили пролистывание файлов!"


alcosholik 03.09.2005 18:58

CloseDir указатель_на_файл

Параметры
указатель_на_файл = переменная, хранящая указатель, полученный командой ReadDir

Описание
Как только вы закончили работать с NextFile$ в ранее открытой командой ReadDir директории, используйте эту команду, чтобы закрыть ее. Это хороший стиль программирования!

См. также: ReadDir, NextFile$

Пример
Код:

; ReadDir/NextFile$/CloseDir – пример использования

; Определить, с какой директории начать
folder$="C:"

; Открыть директорию и сохранить указатель в myDir
myDir=ReadDir(folder$)

; Будем повторять бесконечно, пока не кончатся файлы/папки в заданной директории
Repeat
; Назначить следующий объект в директории переменной file$
file$=NextFile$(myDir)

; Если такового нет, выйти из цикла
If file$="" Then Exit

; Использовать FileType, чтобы определить является объект папкой или файлом, и вывести результаты
If FileType(folder$+""+file$) = 2 Then
Print "Folder:" + file$
Else
Print "File:" + file$
End If
Forever

; Правильно закрыть директорию
CloseDir myDir

; Вот и все!
Print "Закончили пролистывание файлов!"


alcosholik 03.09.2005 18:59

NextFile$ (указатель_на_файл)

Параметры
указатель_на_файл = переменная, хранящая указатель, полученный командой ReadDir

Описание
Эта команда возвращает следующий файл или папку из открытой в данный момент директории (используйте ReadDir, чтобы открыть необходимую директорию для считывания). Т.е. она возвращает строку, содержащую имя папки или файла с расширением. Используйте FileType, чтобы определить папка это или файл. Вы не можете «двигаться» в обратную сторону внутри директории, только вперед. Можно распределить содержимое директории по элементам массива для отображения и т.п.

См. также: ReadDir и CloseDir.

Пример
Код:

; ReadDir/NextFile$/CloseDir – пример использования

; Определить, с какой директории начать
folder$="C:"

; Открыть директорию и сохранить указатель в myDir
myDir=ReadDir(folder$)

; Будем повторять бесконечно, пока не кончатся файлы/папки в заданной директории
Repeat
; Назначить следующий объект в директории переменной file$
file$=NextFile$(myDir)

; Если такового нет, выйти из цикла
If file$="" Then Exit

; Использовать FileType, чтобы определить является объект папкой или файлом, и вывести результаты
If FileType(folder$+""+file$) = 2 Then
Print "Folder:" + file$
Else
Print "File:" + file$
End If
Forever

; Правильно закрыть директорию
CloseDir myDir

; Вот и все!
Print "Закончили пролистывание файлов!"


alcosholik 03.09.2005 18:59

CurrentDir$()

Параметры
Отсутствуют.

Описание
Эта команда возвращает выбранную в данный момент директорию, полезно для продвинутых операций с файлами. Используйте ChangeDir, чтобы изменить текущую директорию. У возвращаемого значения нет замыкающей черты, за исключением корневого каталога диска. (чтобы понять, когда есть замыкающая черта, а когда ее нет, поэкспериментируйте сами - прим. перев.)

Пример
Код:

; CurrentDir$() – пример использования

; Выводить на экран текущую директорию, пока не будет нажато Esc
While Not KeyHit(1)
Print CurrentDir$()
Wend


alcosholik 03.09.2005 19:01

ChangeDir директория/путь

Параметры
директория/путь = полный путь к директории/каталогу

Описание
Эта команда сменит выбранную в данный момент директорию, полезно для продвинутых операций с файлами. Используйте CurrentDir$(), чтобы узнать, какая директория является текущей. Вы можете использовать в качестве значения директории/пути «..» для того, чтобы сменить текущую директорию на содержащую ее, пока не окажетесь в корневом каталоге жесткого диска.

Пример
Код:

; ChangeDir – пример использования

ChangeDir "c:winntsystem32"
Print "Директория изменилась на: " + currentdir$()

прим. перев.: не совсем понятно, что значит параметр winntsystem32 (скорей всего "winnt\system32"). Лучше для определения системной папки использовать SystemProperty(), например:
Код:

sysdir$ = SystemProperty(“windowsdir”)
ChangeDir sysdir+”system32”


alcosholik 03.09.2005 19:01

CreateDir путь/имя

Параметры
путь/имя = полный путь и имя для новой директории

Описание
Создает директорию (папку) по заданному пути. Не используйте замыкающую черту в конце параметра путь/имя (работает и с чертой, даже CreateDir “c:mydir” работает – прим. перев.). Вы не можете быть уверены в том, что директория была создана, так что необходимо проверить, существует ли она (используйте команду FileType для этого).

Пример
Код:

; CreateDir – пример использования

fldr$="c:winntsystem32myfolder"
CreateDir fldr$
Print "Папка создана!"

прим. перев.: не совсем понятно, что значит параметр winntsystem32 (скорей всего "winnt\system32"). Лучше для определения системной папки использовать SystemProperty(), например:
Код:

sysdir$ = SystemProperty(“windowsdir”)
fldr$=sysdir+”system32\myfolder”


alcosholik 03.09.2005 19:02

DeleteDir директория/путь

Параметры
директория/путь = полный путь/имя директории

Описание
Удаляет заданную директорию (папку) с устройства. Работает только с ПУСТЫМИ директориями – вы не можете удалить папку, содержащую другие папки или файлы. Не используйте замыкающую черту (почему-то работает и при ее использовании – прим. перев.).

Пример
Код:

; DeleteDir – пример использования

DeleteDir "C:est"


alcosholik 03.09.2005 19:03

FileType (файл$)

Параметры
файл$ = любой допустимый путь и имя файла

Описание
Эта команда проверяет файл по указанному пути и определяет, существует ли он, а также является ли он файлом или папкой. Вот значения, которые возвращает команда:

1 = Файл существует
0 = Файл не существует
2 = Существует, но не файл, а директория (папка)

Используйте эту команду для проверки, существует ли файл, перед тем, как работать с ним.

Пример
Код:

; Пользователям Windows 9x нужно будет изменить путь к calc.exe

filename$="c:winntsystem32calc.exe"

if fileType(filename$)=1 then Print "Файл существует!"
if fileType(filename$)=0 then Print "Файл не найден!"
if fileType(filename$)=2 then Print "Это папка!"

Print "Нажмите любую клавишу для выхода."

WaitKey()

прим. перев.: не совсем понятно, что значит параметр winntsystem32 (скорей всего "winnt\system32"). Лучше для определения системной папки использовать SystemProperty(), например:
Код:

sysdir$=SystemProperty(“windowsdir”)
filename$=sysdir+”system32\calc.exe”



Часовой пояс GMT +4, время: 23:02.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot