Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Курс лекций.docx
Скачиваний:
11
Добавлен:
01.07.2025
Размер:
425 Кб
Скачать
☆

12.3. Чтение данных из файла с последовательным доступом.

Чтение из файла одной строки

Для чтения из файла за один раз одной строки информации используется оператор Line Input (вывод строки). Это оператор выполняет чтение текста, начиная с текущей позиции указателя до символа возврата каретки или перехода на новую строку. Для оператора Line Input используется следующий синтаксис:

Line Input #filenum, varname

Где

#filenum – номер, или дескриптор открытого файла, который используется для ввода. Это то же самое число, которое определено в операторе Open при открытии файла. Как и в операторе Open, это может быть число или числовая переменная , Символ # указывает, что далее следует числовое выражение.

Второй параметр - имя переменной, используемой для хранения информации, содержащейся в строке файла. Переменная должна иметь тип string или variant. Оператор Line Input позволяет читать за один раз одну строку и устанавливать соответствующее значение переменной varname.

Пример:

Open “A:\TEST1.TXT” For Input As #1 ‘Открытие файла TEST1.TXT на диске A

Do While Not EOF(1) ‘начало цикла просмотра файла до конца

Line Input #1, fstlin ‘ чтение одной строки файла

eqpos = InStr(fstlin, “=”) ‘определение знака равенства

optparm = Trim(Ucase(Left(fstlin, eqpos – 1))) ‘вывод из строки имени параметра и его значения

stlen = Len(fstlin)

optval = Right(fstlin)

If optparm = “DEFONT” Then - ‘идентификация имени параметра и присваивает его значение свойству текстового окна

txtTest.Font.Name = Trim(optval)

End If

Loop do

Close #1

Функция EOF (End of file) определяет конец файла. Принимает значение True при достиженииконца файла.

Чтение заданного количества символов

Для чтения из файла заданного количества символов, или даже всего файла, можно использовать функцию Input. Функция Input осуществляет чтение указанного количества символов из файла, начиная с текущей позиции указателя ( определяемой как позиция за последним прочитанным символом).

Синтаксис обращения к функции Input имеет следующий вид:

varname = Input (numchrs, [#]filenum)

где

filenum – определяет дискриптор открытого файла, из которого вы хотите прочесть информацию

[#] – указывает, что далее следует числовое выражение;

numchrs – Определяет количество символов, которое вы хотите прочесть из входного файла;

varname – имя переменной типа String или Variant, в которую записывается результат выполнения операции вывода.

Функция Input читает и хранит в переменной все встретившиеся символ, включая пробелы, символы конца строки и тому подобное.

При чтении всего файла количество символов в нем можно определить с помощью функции Lof. Функция Lof определяет количество символов и ли байтов в файле. Обращение к функции выполняется с помощью следующего выражения:

resultver = LOF(filenum)

resultver – представляет переменную, содержащую возвращаемое функцией значение. а filename – номер файла, открытого с помощью оператора Open.

В приведенном примере представленный код позволяет прочесть все содержимое файла в текстовое окно для редактирования. Имя файла пользователь может определить с помощью другого текстового окна на экранной форме. Код помещается в поле события Click командной кнопки Open Fife на экранной форме.

Пример:

Dim numchars As Long

filnam = txtFileName.Text

Open filnam For Input As #1

numchars m = LOF(1) ‘ олределение длины файла.

If numchars > 3200 Then ‘сравнение длины файла с размером текстового окна.

MsgBox “File is too long for this program”

Exit Sub

End If

txtFileContents.Text = Input(numchars, #1)

Close #1

Функция LOF позволяет определить длину файла в байтах.

Чтение нескольких переменных

Рассмотренные операторы позволяют считывать данные из файла по частям только в переменную типа String. Для того чтобы одним оператором прочитать данные сразу в несколько переменных непосредственно в программу следует использовать оператор Input #, а для считывания определенного количества символов Input$

Он используется следующим образом.

Input #filenum, variant,

где

filenum – Определяет номер файла открытого для вывода;

variant – представляет список переменных, в которые будет помещаться информация, считываемая из файла. Список может содержать любое количество переменных любого типа за исключением массивов.

Последовательность и типы данных в списке должны соответствовать последовательности и типу данных в файле. Если. например вы попытаетесь с помощью оператора Input # записать прочитанные данные в переменные типа String и Imteger, в то время как файл содержит две строки, возникнет ошибка, и будет выведено сообщение о несоответствии типов считываемых данных.

Данные, читаемые из файла с помощью оператора Input #, должны быть разделены запятыми или находиться в различных строках. Подобный способ задания данных известен как ограничение данных запятой.

Несмотря на то, что в операторе Input # не допускается использование массива , можно указать его элемент. Ниже приводится код, позволяющий с помощью такого приёма выполнить считывание данных в массив.

1. Dim ThisArray (1 To 10)

For i = o To 10

Input #1, ThisArray(i)

Next i

2. strText = Input$ (LOF(intFH), intFH)

Close #intFH