Записите представят хетерогенно множество от елементи. Елементите се наричат полета и са независими помежду си. Декларацията на тип запис изисква идентификатор и тип на всяко едно от полетата:
type recordTypeName = record
fieldList1: type1;
...
fieldListn: typen;
end;
Пр.:
type
TDateRec = record
Year: Integer;
Month: (Jan, Feb, Mar, Apr, May, Jun,
Jul, Aug, Sep, Oct, Nov, Dec);
Day: 1..31;
end;
Полетата се представят в паметта като отделни променливи. Декларацията на TDateRec не заделя памет за отделните полета. Това става, едва когато създадете конкретна инстанция по следния начин:
var Record1, Record2: TDateRec;
Достъп до полетата имате посредством името на променливата запис и идентификатор на полето:
Пр.:
Record1.Year := 1904;
Record1.Month := Jun;
Record1.Day := 16;
Когато многократно се обръщате към полетата на един и същ запис, използвайте оператора with:
with Record1 do
begin
Year := 1904;
Month := Jun;
Day := 16;
end;
Файлът е подредено множество от еднотипни елементи. За да декларирате файлов тип, използвайте следния синтаксис:
type fileTypeName = file of type
По този начин се декларират типизираните файлове. За да декларирате нетипизиран файл използвайте само ключовата дума file.
Пр.:
type
PhoneEntry = record
FirstName, LastName: string[20];
PhoneNumber: string[15];
Listed: Boolean;
end;
PhoneList = file of PhoneEntry;
Съществуват два основни типа файлове:
-
Двоичен файл: съхранява данните във формат, с който са представени в оперативната памет;
-
Текстов файл: съхранява данните като дълъг списък от символи.
Физическият карай на файла се отбелязва от т.нар. индикатор за край на файл, който е необходим на операционната система при четене и запис в него. Всеки ред на текстовия файл се ограничава от специален символ или двойка символи, наречени индикатор за край на ред.
Операционната система разпознава файла по неговото име, което се съхранява в списък на директорията. Този списък се създава и поддържа от операционната система и съдържа информация за всеки файл в кокретна директория /име, тип, размер/. За да получите достъп до външен файл /разположен във външната активна памет/ по време на изпълнение на прогамата, е необходимо да създадете файлова променлива. За текстов файл файловата променлива се декларира със стандартен идентификатор Text или TextFile, а за двоичен файл- със стандартен идентификатор File.
Процедурата AssignFile асоциира име на външен файл с файлова променлива.
procedure AssignFile(var F; FileName: string);
Когато параметърът FileName е празен, F се асоциира със стандартен входен или изходен файл.
За да създадете и отворите нов файл, използвайте процедурата Rewrite:
procedure Rewrite(var F: File [; Recsize: Word ] );
F е променлива от произволен файлов тип, асоциирана с външен файл посредством AssignFile. Recsize е незадължителен параметър.
Процедурата Append подготвя съществуващ файл за добавяне на текст в края му.
procedure Append(var F: Text);
F е променлива от тип текстов файл, която трябва да бъде асоциирана с външен файл посредством AssignFile.
Пр.:
var
F: TextFile;
S: string;
begin
if OpenDialog1.Execute then { Display Open dialog box }
begin
AssignFile(F, OpenDialog1.FileName); { File selected in dialog box }
Reset(F);
Readln(F, S); { Read the first line out of the file }
Edit1.Text := S; { Put string in a TEdit control }
CloseFile(F);
end;
end;
За да терминирате връзката мъжду файловата променлива F и съответстващия и външен файл, използвайте процедурата CloseFile:
procedure CloseFile(var F);
Аналог на тази процедура е процедурата Close в езика Pascal.
За да отворите съществуващ файл, използвайте процедурата Reset:
procedure Reset(var F [: File; RecSize: Word ] );
Когато използвате процедурата Reset, за да укажете режима на достъп до файла, използвайте променливата FileMode:
var FileMode: Byte;
По подразбиране тази променлива има стойност 2, което означава, че файлът се отваря както за четене, така и за запис. Когато FileMode има стойност 0, файлът се отваря само за четене, а когато има стойност 1- само за запис.
Пр.:
var
F: file;
begin
AssignFile(F, FileName);
FileMode := 0; ( Set file access to read only }
Reset(F);
CloseFile(F);
end;
За да проверите дали файловия показалец указва край на линия, използвайте функцията Eoln:
function Eoln [(var F: Text) ]: Boolean;
Функцията Eof проверява дали текущата файлова позиция е край на файл:
function Eof(var F): Boolean;
function Eof [ (var F: Text) ]: Boolean;
Четене и запис в текстов файл:
procedure Write( [var F: Text; ] P1 [ , P2,..., Pn] );
Процедурата Write записва една или повече променливи в текстов файл. Всеки параметър P включва изходен израз, чиято стойност ще бъде записана във файла.
procedure Read( [ var F: Text; ] V1 [, V2,...,Vn ] );
Процедурата Read чете една или повече стойности в една или повече променливи.
procedure Readln([ var F: Text; ] V1 [, V2, ...,Vn ] );
Процедурата Redln чете един ред от текстов файл, след което преминава към следващия ред на файла.
Четене и запис в двоичен файл:
procedure Write(F, V1,...,Vn);
Процедурата Write записва променливите V във файл.
procedure Read(F , V1 [, V2,...,Vn ] );
Процедурата Read чете един файлов компонент в променлива.
За да получите размера на файла, използвайте функцията FileSize:
function FileSize(var F): Integer;
Тази функция можете да използвате само ако файлът е отворен с Reset. Ако файлът е празен, тя връща стойност 0.
Текущата файлова позиция можете да получите от функцията FilePos:
function FilePos(var F): Longint;
Тази функция не може да се използва за текстови файлове. Преди да я извикате трябва да отворите файла с Reset.
Position | Result |
|
Beginning of file
|
FilePos(F) = 0
|
Middle of file
|
FilePos(F) = current file position
|
End of file
|
Eof(F) = True
|
Сподели с приятели: |