Table.SelfReferenceCount

From SunFlurry wiki
Jump to: navigation, search
  SelfReferenceCount (Счетчик ссылок на себя)
Объект:Электронная таблица
Статус разработки: Реализована
Тип:Атрибут
Обращение к БД:Нет
Доступность:Чтение и запись
Визуальность:Нет

Атрибут позволяет получить или изменить количество ссылок на себя, хранящихся в объектах таблицы. Если не установить это число корректно, таблица не может быть удалена из памяти, так как количество ссылок на нее останется больше нуля, когда она будет удалена из ссылающейся последней переменной, и это приведет к утечке памяти. К сожалению, нет универсально рецепта для нахождения SelfReferenceCount, это всегда зависит от разработчика, иначе система смогла бы сама определить значение атрибута, и в его задании не было бы необходимости. См. также следующую статью.

Синтаксис

Table.SelfReferenceCount:<Количество ссылок на себя в объектах таблицы (INT)>

Возвращаемое значение

Возвращает число -- текущий счетчик ссылок на себя.

Примеры


...

//Поиск ссылок в объектах, добавляемых для обновлении информации в таблице
//  внутри объектов хранится информация по текущей таблице, чтобы программа имела возможность вывести в нее обновленную информацию.
СпБыло:=List.Create();
Чл:=0;
For i:=1 To Т.Objects.Count() Do
  if (Т.Objects(i).Name="cRefresh")or(Т.Objects(i).Name="cTools") Then
    Зн:=Т.Objects(i).Value;
    //Зн -- значение объекта
    If СпБыло.Find(Зн)=0 Then
      //Если это список, возможно в нем есть наша таблица
      If TypeStr(Зн)="LIST" Then
        For i:=1 To Зн.Size() Do
          If TypeStr(Зн.Get(i))="TABLE" Then
            Чл:=Чл+1;
            break;
          EndIf;
        EndDo;
      ElseIf TypeStr(Зн)="TABLE" Then
        Чл:=Чл+1;
      EndIf;  
      СпБыло.Add(Зн);
    EndIf;
  EndIf;
EndDo;

Т.SelfReferenceCount:=Чл;
Т.Show();