Неограниченные последовательные файлы.

Данные в этих файлах представлены так, как они выглядят на экране дисплея ил после печати:

 

OPEN "ADD.BAS" FOR OUTPUT AS #1

String$="This is a string of text"

Integer%=1000

Floating!=30000.1234

PRINT #1,String$,Integer%,Floating!

String$="Appol"

Integer%=-32.767

Floating!=12345.54296875

PRINT #1,USING "+##### & ##.##^^^^;Integer%,String$,Floating!

CLOSE #1

END

 

Содержимое файла ADD.BAS:

This is a string of text 1000 30000.1234

-32767 Appol 12.35E+03

 

Если Вы попытаетесь считать данные из этого файла с помощью оператора INPUT #1, String$, Integer%, Floating!, то в строковую переменную будет считано слово This, а затем программа попытается считать числовое значение, наткнется на цепочку is и выдаст ошибку. Поэтому прменим здесь другие операторы для считывания:

 

OPEN "ADD.BAS" FOR INPUT AS #1

String$=""

String$=INPUT$(80,1)

PRINT String$

LINE INPUT #1,String$

PRINT String$

CLOSE #1

END

 

Сведем операторы и функции Turbo-Basic,управляющие последовательными файлами, в таблицу:

 

 

Оператор/функция Операция

 

 

CLOSE Оканчивает операции на файле(ах)

EOF Сигнализирует о достижении конца файла

INPUT # Считывает запись (строку текста) в указанную переменную(ые)

INPUT$ Считывает n знаков в цепочную переменную

LINE INPUT # Считывает целую строку в цепочную переменную

OPEN Открывает файл для режима INPUT,OUTPUT,APPEND и присваивает

ему номер

PRINT #, Заносит данные в файл без ограничительных запятых

PRINT # USING

WRITE # Заносит данные в файл без ограничительных запятых

__________________________________________________________________________________

 

Описание этих операторов представлено ниже

 

CLOSE Закрывает файл или устройство.

 

Синтаксис: CLOSE [[#]filenum[, [#]filenum]...]

 

Комментарии: filenum - номер файла, который надо закрыть.

 

CLOSE прерывает соответствие между номером файла и файлом, установленное оператором OPEN, и закрывает файл. CLOSE без аргументов закрывает все файлы и устройства.

 

EOF сигнал достижения конца файла

 

Синтаксис: EOF(номер_файла)

 

Комментарии: номер_файла - номер файла из которого происходит считывание данных.

 

Функция EOF возврщает -1 («истина»), если указатель в файле последовательного доступа дошел до его конца. Эта функция может использоваться для тестирования конца файла при вводе данных - для того, чтобы избежать ошибки.

 

INPUT# считывает данные из последовательного файла.

 

Синтаксис: INPUT filenum, variable list

 

Комментарии filenum - номер, под которым был открыт файл

variable list - одна или несколько разделенных запятыми строковых или числовых переменных, в которые INPUT# считывает данные.

Файл может быть дисковым файлом, последовательным портом COM(n) или клавиатурой KYBD. Данные в файле должны соответствовать типу переменных в variable list и разделяться запятыми или символом возврата каретки (так записывает данные оператор WRITE#).

 

INPUT$ считывает заданное число символов с клавиатуры или файла.

 

Синтаксис: s$=INPUT$ (n, [, [#]filenum])

 

Комментарии: n - число символов, которое необходимо считать из файла

filenum. - номер файла.

 

Если filenum опущен, происходит ввод с клавиатуры, при этом вводимые знаки отсылаются в строку, а не на экран. Достоинство INPUT$ состоит в том, что он позволяет считывать все знаки, включая и управляющие коды. Но при нажатии клавиши, не имеющей кода а ASCII, возвращается CHR$(0).

 

LINE INPUT# считывает строку из последовательного файла в строковую переменную, игнорируя ограничители.

 

Синтаксис: LINE INPUT #filenum,string variable

 

Комментарии: filenum - номер файла,строка из которого считывается в строковую переменную string variable с игнорированием ограничительных запятых в тексте.

 

OPEN готовит файл или устройство для считывания или записи.

 

Синтаксис: OPEN filespec [FOR mode] AS [/] filenum [LEN=record size]

OPEN mode string,[/] filenum,filespec [record size]

 

Комментарии: mode - один из:

OUTPUT - определяет последовательный файл для записи в него.

INPUT - определяет последовательный файл для считывания из него.

APPEND - определяет последовательный файл для дозаписи в конец файла.

RANDOM - определяет файл прямого считывания для чтения или записи.

BINARY - определяет двоичный файл для чтения или записи.

mode string - строковое выражение, первым знаком в котором (и обычно единственным) служит один из следующих:

O - определяет режим последовательного вывода.

I - определяет режим последовательного ввода.

A - определяет режим последовательного вывода в конец файла.

R - определяет режим случайных входных/выходных сигналов.

B - определяет режим двоичного входа/выхода.

filenum может служить любое целое число. Для изменения этого числа служит оператор FILES в файле CONFIG.SYS в DOS.

filespec - строковое выражение, определяющее спецификацию файла.

record size - целочисленное выражение в пределах от 1 до 32767, определяющее длину записи в файле прямого доступа (умолчание составляет 128 байт).

Оператор OPEN осуществляет связь между числом (filenum) и файлом или физическим устройством и подготовку устройства для считывания или записи. В дальнейшем в операторах и функциях, работающих с файлами, вместо имен файлов используется указанное число (filenum). OPEN указывает на тип файла: с произвольным доступом, двоичный или файл с последовательным доступом (причем для последнего указывается режим работы: чтение или запись). Аннулирует действия оператора OPEN оператор CLOSE, закрывающий файл.

 

PRINT # и PRINT # USING записывают форматированную информацию в файл.

 

Синтаксис: PRINT #filenum, [USING format string;]expression list[;]

 

Комментарии: filenum - номер открытого файла.

format string - необязательная последовательность форматируемых знаков (описаны в операторе PRINT USING).

expression list - последовательность числовых и/или строковых выражений, выводимых в файл.

PRINT # пересылает информацию в файл таким же образом, как PRINT пересылает ее на экран. Т.к. оператор INPUT # требует разделения значений запятой, то в операторе PRINT # надо разделять данные:

 

PRINT #1,1","2","3

 

При этом в файле будет записано: 1 , 2 , 3

 

Оператор WRITE # автоматически разделяет данные, выводимые в файл, запятыми.

 

WRITE# выводит данные в последовательный файл.

 

синтаксис WRITE# N_файл, список выражений

 

Коментарии N_файл - это число, ассоциируемое с устройством или файлом в момент открывания файла.

Список выражений - это последовательность числовых и/или строчных выражений, разделяемых запятыми или точками с запятой.

 

return false">ссылка скрыта

WRITE# подобно PRINT# за исключением того, что WRITE# вставляет запятые между элементами списка выражений, выдает строчные данные внутри двойных кавычек и не выводит пробел перед положительным числом. WRITE# является предпочтительным способом записи полей данных в последовательный файл, поскольку этот оператор обеспечивает автоматическое разделение переменных запятыми и простановкой кавычек с обеих сторон строк. Это упрощает использование оператора INPUT#, когда осуществляются выписки из файла.