ФАЙЛОВЕ. РАБОТА НА БАЗОВ СЪС СЕРИАЛНИ ФАЙЛОВЕ
3. ФАЙЛОВЕ. РАБОТА НА БАЗОВ СЪС СЕРИАЛНИ ФАЙЛОВЕ
И ДИРЕКТЕН ДОСТЪП
Ако искате да използвате набор от данни или програма многократно, трябва да ги съхраните на външно устройство за съхранение (напр. диск или флопи диск). За целта се създава файл. Файлът трябва да има име. Името се състои от две части: самото име и разширението
Името може да съдържа до 8 знака, разширението - до три.
Могат да се използват следните знаци
A - z 0 - 9 ( ) @ # $ % ^ & ! -_/'
Пълното име на файл в MS DOS съдържа целия път на дървото от основната директория до желания файл. Например,
където C е името на диска, ST е името на директорията на диска, LAB е името на поддиректорията на ST директорията, work.bas е името на BASIC програмата.
По-нататък ще бъдат обсъдени само файлове с данни.
3.1. Последователни файлове
Последователният файл се състои от записи, които са достъпни последователно, т.е. следва n-ти запис (n -
1) th както при формиране на файл, така и при четене от него.
Създаването на последователен файл включва следните стъпки: отваряне на файла (операторът OPEN), запис на данни във файла (операторите PRINT#, WRITE# или PRINT# USING) и затваряне на файла (операторът CLOSE).
Четенето от последователен файл включва следните стъпки: отваряне на файл, въвеждане на данни от файл (операции INPUT#, INPUT$, LINE INPUT#), затваряне на файл.
Операторът OPEN подготвя файл за четене от файл
(INPUT) или писане във файл (OUTPUT, ако се създава нов файл,
APPEND, ако добавяте записи към вече съществуващ файл).
ОТВОРЕТЕ име на файл ЗА ИЗХОД КАТО #номер на файл
Операторът CLOSE затваря файла, т.е. прави невъзможно четенето или писането.
ЗАТВОРИ [#номер на файл]
Операторът CLOSE без параметри затваря всички отворени файлове. Единица информация, която се прехвърля при запис във файл
или четене от файл, е запис (логически запис). Записване
разделени на полета. Всяко поле е свързано с един елемент от данни. Могат да бъдат създадени два типа последователни файлове:
1) с разделители на полета, когато всяко поле се разделя автоматично със специален знак (например запетая). Командата WRITE# се използва за създаване на такъв файл, а инструкцията INPUT# се използва за четене от него.
Данните във файла се съхраняват в същата форма, както ако са въведени на клавиатурата при изпълнение на оператора INPUT, т.е. разделени със запетаи и всеки запис завършва с нов ред. Операторът INPUT# има формата
INPUT #номер на файл, списък с променливи
където променливите в списъка по тип трябва да съвпадат с данните в
2) полетата не са разделени и всеки запис е точно същият като
ако тези данни са показани на екрана или отпечатани на принтер. Операторът PRINT# се използва за създаване на такъв файл, а операторите INPUT$ или LINE INPUT# се използват за четене от него. Операторът INPUT$ прехвърля целия низ (запис) с посочената дължина n от файла наведнъж към символна променлива, например ST$
ST$ = INPUT$ (n, #номер на файл)
Операторът LINE INPUT# предава целия низ към указаната променлива ST$, независимо от нейната дължина.
РЕДОВ ВХОД #номер на файл, ST$
Пример (с разделители на полета):
ОТВОРЕТЕ „SEQU.DAT“ ЗА ИЗХОД КАТО №1
'сега напишете низа във файла
WRITE #1, ST$, INT%, FLOT!
'напишете още един ред във файла
WRITE #1, INT%, ST$, FLOT!
Генерираният файл ще бъде както следва
"ИВАНОВ", 1972, 75.3
1975 г., "ПЕТРОВ", 62.5
Следната програма чете от този файл:
ОТВОРЕТЕ „SEQU.DAT“ ЗА ВЪВЕЖДАНЕ КАТО №1
'сега прочетете ред текст от файла
ВХОД #1, ST$, INT%, FLOT!
PRINT ST$, INT%, FLOT!
'прочетете още един ред
ВХОД #1, INT%, ST$, FLOT!
PRINT INT%, ST$, FLOT!
Пример (без разделители на полета):
ОТВОРЕТЕ „SEQUEN.DAT“ ЗА ИЗХОД КАТО #1
'напишете ред текст във файл
ПЕЧАТ #1, ST$, INT%, FLOT!
'напишете друг низ, като използвате оператора
ПЕЧАТ #1, ИЗПОЛЗВАЙКИ "+####$#.##^^^^"; INT%, ST$, FLOT!