Transcript Document

Файлове
1. Същност
Наредена последователност от
елементи, разположено върху
външно запомнящо устройство (ВЗУ)
2. Видове в зависимост от
елементите на файла


С пряк достъп (компонентите са с
еднаква дължина);
С последователен достъп (при
различна дължина на компонентите).
3. Дефиниране на тип файл
Type
<име на файл>=FILE of <базов тип>;
{базовият тип е произволен, с изключение
на тип файл}
 VAR
<списък променливи>:<име на тип>;
<списък променливи>: FILE of <базов
тип>;

4. Примери


Type
tel=RECORD
kod:longint;
telnumber:longint;
END;
Ftel= FILE OF tel;
VAR
t1:Ftel;
5. Прилика и разлика с
масива


Прилика- всеки елемент е
индексиран с начална стойност 0;
Разликата е в наличието на файлов
маркер (указател). В определен
момент той съдържа номера на
текущия елемент. Стойността на
указателя може да се обработва със
стандартни подпорограми.
6. Стандартни процедури

Процедура за назначаване:
ASSIGN(FileVar,St);



Предназначение: свързва вътрешния с
външния файл;
Действие: St е текстов израз даващ явното
име на файла. Това име на файла се присвоява
на променливите за файл FileVar и този файл
се намира на диска под име St. Не се допуска
използването на Assign върху вече отворен
файл.
Пример: assign(t1,’tel.dat’);
Стандартни процедури

Процедура за създаване:
REWRITE(FileVar);


Предназначение: създава нов файл и
го отваря за запис, като файловия
указател сочи към началния запис. Ако
файлът вече съществува, то той се счита
за празен и се изтрива досегашното у
съдържание;
Пример: rewrite(t1);
Стандартни процедури

Процедура за отваряне:
RESET(FileVar);


Предназначение: файлът върху диска
под името присвоено на променливата
FileVar се подготвя за обработка и
указателя се поставя в началото на
файла;
Пример: reset(t1);
Стандартни процедури

Процедура за четене:
READ(FileVar,Var);


Предназначение: чете данни от
файла, като Var означава една или
повече компоненти от файла FileVar,
отделени с запетая. Всяка компонента се
чете от файла и след всеки оператор за
четене указателят на файла се
премества към следващия елемент;
Пример: read(t1,a1,a2);
Стандартни процедури

Процедура за запис:
WRITE(FileVar,Var);


Предназначение: записва данни във
файл, като Var означава една или
повече компоненти от файла FileVar,
отделени с запетая. Всяка компонента се
записва във файла и указателят на
файла се премества към следващия
елемент;
Пример: write(t1,b1,b2,b3);
Стандартни процедури

Процедура за запълване или освобождаване на
вътрешния буфер:
FLUSH(FileVar);


Предназначение: при условие, че файлът е отворен с
rewrite, то процедурата flush предизвиква
освобождаване на вършения буфер във външния файл.
Flush осигурява възможността следващата след нея
операция върху файла да извърши действително четене
от файла върху диска. Ако файла е отворен с reset, то
flush ще предизвика ново запълване на вътрешния
буфер след процедурата за четене от файла. Flush не
може да се прилага над затворен файл;
Пример: reset(t1);
read(t1,a,b,c);
flush(t1);
Стандартни процедури

Процедура за затваряне:
CLOSE(FileVar);


Предназначение: затваря файла върху
диска, свързан с FileVar и в
директорията на диска, където файла е
разположен, се отрязва новото му
състояние;
Пример: close(t1);
Стандартни процедури

Процедура за изтриване:
ERASE(FileVar);


Предназначение: изтрива файла
върху диска, свързан с FileVar и в
директорията на диска, където файла е
разположен. Ако файлът е отворен,
необходимо е да се изпълни командата
close;
Пример: erase(t1);
Стандартни процедури

Процедура за преименуване:
RENAME(FileVar,St);


Предназначение: преименува файла
върху диска, свързан с FileVar като му
дава ново име, взето от текстовата
променлива St;
Пример: rename(t1,’tel.dta’);
7. Стандартни функции

Функция за позициониране:
SEEK(FileVar,n);


Предназначение: премества файловия
указател на n-тата му компонента.
Позицията на първата компонента е 0.
За да се разшири даден файл може да
се избере стойност на номера на
компонента извън границата на
последната компонента;
Пример: seek(t1,0);
Стандартни функции

Функция за достигнат край на файла:
EOF(FileVar);

Предназначение: дава стойност true,
ако указателя на файла е достигнал
последния му елемент и false в
противен случай.
Стандартни функции

Функция за достигнат край на ред
във файла:
EOLN(FileVar);

Предназначение: дава стойност true,
ако указателя на файла е достигнал
край на ред (или на файл) и false в
противен случай.
Стандартни функции

Функция за текущата стойност на
указателя на файла:
EOLN(FileVar);

Предназначение: дава текущата
стойност на файлoвия указател.
Стандартни функции

Функция за броя компоненти на
файла:
FILESIZE(FileVar);

Предназначение: дава като резултат
броя компонентите на файла.
8. Текстови функции




Текстовия файл има за основни
компоненти знакове, които са
структурирани в дялове, всеки от които
завършва с маркер за край на файл.
Текстовите файлове могат да бъдат
обработени само последователно, т.е. те
са от втория тип (с последователен
достъп).
Декларират се като променливи от тип
text.
Примери:
Var tf:text;
9. Прилика с другия вид
файлове


Процедурите за файлове важат и тук;
Новото е възможността за добавяне
на записи след края на съществуващ
файл. За тази цел се използва
процедурата APPEND (например
append(t1))
10. Въвеждане на
информация


Оператори READ или READLN;
Пример:
Var
tf:text;
x1,x2,:integer;
s:string;
…………..
readln(tf,x1,x2,s);
11. Извеждане на
информация


Оператори WRITE или WRITELN;
Пример:
Var
tf:text;
x1,x2,:integer;
s:string;
…………..
writeln(tf,x1,x2,s);