КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Неограниченные последовательные файлы
Последовательные файлы с ограниченным полем. При рассмотрении последовательного файла видно, что данные в файле разделяются запятыми и любые цепочки заключаются в двойные кавычки (кавычки предохраняют Вас от хлопот с вкрапленными запятыми в цепочке). Рассмотрим формирование и внутреннее представление последовательного файла ADD.BAS:
OPEN "ADD.BAS" FOR OUTPUT AS #1 String$="This is a string of text" Integer%=1000 Floating!=30000.1234 WRITE #1,String$,Integer%,Floating! String$="Appol" Integer%=-32767 Floating!=12345.54296875 WRITE #1,Integer%,String$,Floating! CLOSE #1 END
Содержимое файла ADD.BAS: "This is a string of text",1000,30000.1234 -32767,"Appol",12345.54296875
Самым важным здесь является то, что оператор WRITE # записывает данные в том виде, в котором оператор INPUT # хочет их найти. Следующая программа считывает данные из последовательного файла:
OPEN "ADD.BAS" FOR INPUT AS #1 String$="":Integer%=0:Floating!=0 INPUT #1,String$,Integer%,Floating! PRINT String$,Integer%,Floating! String$="":Integer%=0:Floating!=0 INPUT #1,Integer%,String$,Floating! PRINT Integer%,String$,Floating! CLOSE #1 END
Важно заметить,что программа не будет работать правильно,если файл был сформирован с помощью команды PRINT #,а не WRTIE #.
Данные в этих файлах представлены так, как они выглядят на экране дисплея ил после печати:
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_файл - это число, ассоциируемое с устройством или файлом в момент открывания файла. Список выражений - это последовательность числовых и/или строчных выражений, разделяемых запятыми или точками с запятой.
WRITE# подобно PRINT# за исключением того, что WRITE# вставляет запятые между элементами списка выражений, выдает строчные данные внутри двойных кавычек и не выводит пробел перед положительным числом. WRITE# является предпочтительным способом записи полей данных в последовательный файл, поскольку этот оператор обеспечивает автоматическое разделение переменных запятыми и простановкой кавычек с обеих сторон строк. Это упрощает использование оператора INPUT#, когда осуществляются выписки из файла.
Дата добавления: 2014-12-16; Просмотров: 447; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |