Функция Freeze |
Функция предназначена для запоминания текущего состояния объекта и перевода объекта в состояние заморожен.
Функция последовательно "пробегает" по всем узлам главной логической таблицы и открывает их как таблицы в памяти. При этом, если в главной логической таблице есть узлы являющиеся объектами, то и они в свою очередь, по средством вызова функции Freeze, загружаются в память.
Далее происходит заполнение таблиц в памяти данными из БД, после чего все операции с главной логической таблицей производятся исключительно в памяти.
После первого вызова функции позиция в узлах главной логической таблицы не определена.
Повторные вызовы функции не приводят к пересчитыванию, потере данных или потери позиции в каком либо узле главной логической таблице, однако, если в главной логической таблице есть узлы являющиеся объектами, то для них в свою очередь будет вызвана функция Freeze.
Ядро Атлантиса для каждого объекта имеет признак, говорящий о том, был ли объект "заморожен". Его значение можно получить функцией Frozen.
Перед уничтожением объекта его не обязательно "размораживать", так как система это сделает сама.
Ситуации, при которых необходимо перекрывать данный метод:
Необходимо "замораживать" некоторые дополнительные переменные или ссылки на другие объекты не входящих в логическую таблицу.
Необходимо "замораживать" объект в котором вообще нет логических таблиц.
В перекрывающем методе перед началом сохранения собственных переменных необходимо вызвать функцию Freeze предка. Если она вернула tsOk, то произвести собственные сохранения. При этом не надо забывать, что ваша функция Freeze может быть вызвана несколько раз и перед сохранением проверять значение возвращаемое функцией Frozen.
function Freeze : word;
Код ошибки (константы с префиксом ts). Это могут быть как ошибки драйвера доступа к БД, так и ошибки логической таблицы.
Функция не генерирует исключений.
Версия : Атлантис 5.0.02.