- создание и уничтожение объекта связанного списка;
- добавление элемента списка в конец с инициализацией его значения и без инициализации;
- удаление произвольного элемента списка;
- возврат количества элементов в списке.
Так как класс TSpisok не является специфичным для данного проекта, нет необходимости в его более подробном рассмотрении. Для получения информации о правилах его использования см. комментарии в распечатках файлов TSpisok.h.
4.2. Описание класса TTask
Класс TTask предназначен для хранения информации об одной операции с файлом для функции потока модуля. Содержит в себе следующие данные:
- int option – тип операции, принимает значения:
0 - открытие файла;
1 - запись в файл;
2 - закрытие файла;
3 - чтение из файла;
4 - синхронизируемая запись в файл;
5 - синхронизируемое чтение из файла.
- int length – размер буфера для операций чтения/записи, для открытия файла – длина имени файла, для закрытия файла – 0;
- char *array – адрес начала буфера чтения/записи, имени файла (в зависимости от типа операции), равен NULL для закрытия файла.
Класс TTask содержит три метода: два вида конструкторов и деструктор.
Один из конструкторов не содержит параметров и является конструктором по умолчанию, второй – основной и служит для инициализации данных объекта класса имеет следующий формат:
TTask::TTask(int opt,int len,char *source), где:
opt – код операции, совпадает со значениями option;
len – длина буфера;
source – адрес буфера-источника.
Этот конструктор приравнивает значения option и length значениям opt и len соответственно, в зависимости от opt либо выделяет память для нового буфера и копирует в него буфер source, либо приравнивает array значению source (для операций чтения).
Деструктор имеет стандартный вид и освобождает память, выделенную в конструкторе (если она была в нем выделена, в зависимости от типа операции).
4.3. Описание класса TAsyncFile
Класс TAsyncFile является основным в модуле асинхронного доступа к файлу. Данные, содержащиеся в этом классе, имеют тип доступа private, и поэтому недоступны для непосредственного изменения или чтения со стороны внешней программы. Описание их назначения и возможных значений содержится в комментариях в распечатке файла TAsyncFile.h.
Методы класса TAsyncFile:
void __fastcall TAsyncFile::Execute() – функция потока. Имеет тип доступа protected и недоступна для непосредственного вызова. Осуществляет все операции с файлом, информацию для которых извлекает из нулевого элемента очереди заданий tasks. После окончания очередной операции удаляет из очереди соответствующий этой операции нулевой элемент.
__fastcall TAsyncFile::TAsyncFile(char *filename,int opt) – конструктор класса. При его вызове необходимо указать имя файла и тип его открытия. Создает объект класса TAsyncFile, инициализирует переменные, помещает в очередь команду открытия файла и запускает функцию потока для выполнения этой команды.
__fastcall TAsyncFile::TAsyncFile() – конструктор класса. Создает объект класса, инициализирует переменные. После его применения необходим вызов метода CreateFile для открытия файла.
bool TAsyncFile::CreateFile(char *filename,int opt) – метод класса, предназначенный для открытия файла после вызова конструктора TAsyncFile(). Добавляет команду открытия файла в очередь и запускает поток. Если команда открытия файла уже выполнялась, возвращает false, иначе true.
bool TAsyncFile::WriteFile(void *buf,int numb)
bool TAsyncFile::WriteSyncFile(void *buf,int numb)
bool TAsyncFile::ReadFile(void *buf,int numb)
bool TAsyncFile::ReadSyncFile(void *buf,int numb) – методы класса, осуществляющие добавление в очередь команд записи, синхронизируемой записи, чтения и синхронизируемого чтения соответственно. В качестве параметра в функции передаются указатель на буфер и длина этого буфера. Возвращают значения false, если произошла ошибка (файл не открыт, файл закрыт, ошибка записи/чтения, попытка записи в файл, открытый для чтения и наоборот); иначе возвращают true.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.