Информационная поддержка планирования и учета учебной работы по балльно-рейтинговой системе, страница 14

bool registered; // признак: true - зарегистрирован, false - исключен

        bool GetRegist() { return registered; }

double Datetime;        // датаивремя

        double GetDateTime() { return Datetime; }

int key;                // уникальныйключзаписи

        int GetKey() { return key; }

TBasicFixedRecord* next; // указатель на следующую запись в списке

TBasicFixedRecord* GetNext() { return next; }

void SetNext(TBasicFixedRecord* n) { next = n; }

        void SetRegist(bool r) { registered = r; }

// Процедуры модификации с установкой флага изменений

void SetModify(); // устанавливает флаг изменений в записи

// ивреестре

void ModifyKey(int);

void ModifyReg(bool);

public:

// Изменение этих свойств "снаружи" приводит к изменению флага

// изменений как самой записи, так и реестра

__property bool isModify = { read=GetModify };

__property bool Registered = { read=GetRegist, write = ModifyReg };

__property TBasicFixedRecord* Next={read=GetNext, write=SetNext };

__property double Date = { read=GetDateTime };

__property int Key = { read=GetKey, write = ModifyKey };

__property AnsiString ID = { read=GetId, write = ModifyId };

// Конструкторпустогоэкземпляра

TBasicFixedRecord(TBasicRegister* owner, int lres = 0);

virtual ~TBasicFixedRecord();

protected:

virtual int LoadAttrib(TFileStream&) { return 1; }

virtual int UnloadAttrib(TFileStream&) { return 1; } // выгрузкатолько

// атрибутивнойинформации

virtual void CopyFromOrig(TBasicFixedRecord* Old);

// полное копирование из записи

intBasicLoad(TFileStream&); // вызывает LoadAttrib

intBasicUnload(TFileStream&); // вызывает UnloadAttrib

voidCopyFromBasicOrig(TBasicFixedRecord* Old);

// полное копирование из записи

public:

int Unload(TFileStream&); // выгрузказаписи

int Load(TFileStream&);

virtual void ModifyFromOrig(TBasicFixedRecord* Old);

// передачаданныхиззаписи

void CopyFrom(TBasicFixedRecord* Old) {  CopyFromOrig(Old); }

// полное копирование (вызывает виртуальную процедуру)

};

Указатель Owner содержит адрес регистра, к которому относится запись. Строковая переменная Id содержит символьное обозначение записи. Для доступа к этому полю предусмотрена функция AnsiString GetId(), которая возвращает текст, который хранится в этом поле. Изменить значение поля можно с помощью функции void ModifyId.

После изменения содержимого полей необходимо отразить информацию о том, что поля строки изменены. Для этого служит бинарный флаг bool ismodify. Чтобы узнать, были ли изменены поля записи, предусмотрена функция bool GetModify(), которая возвращает значение флага. Если значение флага равно true, то изменения в записи были, если false, то поля записи не изменялись. Значение флага модификации можно изменить с помощью процедуры void SetModify().

В процессе работы с реестром он наполняется строками. Часть из этих строк устаревает и подлежит удалению. Пользователь “Электронного журнала” сам решает, удалить запись или оставить. Чтобы пометить удаляемую запись, предусмотрен бинарный флаг bool registered. Если он содержит значение true, то запись активна и удалению не подлежит; если значение false, то запись подлежит удалению. При оптимизации реестра эти записи будут удалены. Узнать значение флага можно с помощью специальной функции bool GetRegist(), установить его – с помощью процедуры SetRegist.

С течением времени информация в полях записи будет обновляться путем синхронизации. Для того чтобы узнать, требует запись обновления или нет, необходимо знать дату последних изменений полей записи. При сравнении двух записей, относящихся к одному объекту, можно сравнивать даты последних изменений между собой и узнать, где содержится более свежая информация. Дата и время последних изменений хранится в поле double Datetime. Узнать дату последних изменений можно с помощью функции double GetDateTime().

Каждой записи реестра присваивается уникальный целочисленный ключ. Ключ хранится в поле int key. Просмотреть значение ключа записи можно с помощью процедуры int GetKey(). Ключ записи присваивается при создании записи автоматически программой.