Вопрос по интерфейсу
Модераторы: m0p3e, edward_K, Модераторы
Вопрос по интерфейсу
Добрый день! Возник такой вопрос. В ард-отчете вызываю свой интерфейс, в котором есть 2 кнопки для выбора подразделения (склад-отправитель и склад-получатель). Нреки помеченных складов загоняю в 2 временные таблицы. Но когда нажимаю в интерфейсе ОК и закрываю интерфейс, чтоб продолжить формирование отчета, в этих таблицах уже ничего не хранится. Похоже, что при закрытии интерфейса происходит очистка этих таблиц. Таблицы описаны в проектном файле. Может нужно указать какой-то параметр интерфейса? подскажите пожалуйста.
Re: Вопрос по интерфейсу
mtChangeRefCount
Re: Вопрос по интерфейсу
маркеры поюзать
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
Re: Вопрос по интерфейсу
Было как-то: мне слово 'local' в описании временной таблицы мешало. Темку создавал даже.
Re: Вопрос по интерфейсу
Спасибо огромное. mtChangeRefCount помогло справиться с проблемой. А нужно ли по завершении формирования отчета изменять количество ссылок на таблицу до 0, т.е. mtChangeRefCount(#tpodr,0); ? Или смысла нет и временная таблица все равно удаляется?
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Вопрос по интерфейсу
а проверить то легко - если при повторном входе в фейс число записей 0 - значит не надо. А вообще на всякий случай чистите принудительно при входе и выходе.
Re: Вопрос по интерфейсу
Если данные больше не нужны обязательно надо чистить. Иначе до конца сеанса Галактики будет зря расходоваться память.
Если вы увеличивали счетчик на единицу mtChangeRefCount(#TabExcel,1), то чтобы почистить надо уменьшить на единицу mtChangeRefCount(#TabExcel,-1)
Если вы увеличивали счетчик на единицу mtChangeRefCount(#TabExcel,1), то чтобы почистить надо уменьшить на единицу mtChangeRefCount(#TabExcel,-1)
Процедура mtChangeRefCount
Назначение
Увеличивает /уменьшает счетчик ссылок на экземпляр данных таблицы в памяти. Если счетчик ссылок = 0, то экземпляр освобождается. Система ведет два счетчика ссылок - один для прикладного, другой для системного использования. Таким образом, система не позволяет освободить экземпляр таблицы в памяти до тех пор, пока на нее есть хотя бы одна реальная ссылка.
Описание
function mtChangeRefCount(iTable : integer; iCount : integer) : longInt;
Параметры
iTable - номер узла в логической таблице;
iCount - значение, на которое надо увеличить /уменьшить значение счетчика ссылок на экземпляр таблицы в памяти.
Возвращает новое значение счетчика ссылок.
-
- Местный житель
- Сообщения: 1089
- Зарегистрирован: 04 сен 2008, 11:27
- Откуда: Москва
- Контактная информация:
Re: Вопрос по интерфейсу
а просто написать mtChangeRefCount(#TabExcel,0) - не прокатит? если надо делать -1 то можно и запутаться в количестве?LaaLaa писал(а):Если данные больше не нужны обязательно надо чистить. Иначе до конца сеанса Галактики будет зря расходоваться память.
Если вы увеличивали счетчик на единицу mtChangeRefCount(#TabExcel,1), то чтобы почистить надо уменьшить на единицу mtChangeRefCount(#TabExcel,-1)
Время ведет!
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Вопрос по интерфейсу
-1 как раз для того чтобы не запутаться. Мож ваш фейс еще откуда то вызовется где эта же табла - там тоже делаете +1-1.
-
- Местный житель
- Сообщения: 1089
- Зарегистрирован: 04 сен 2008, 11:27
- Откуда: Москва
- Контактная информация:
Re: Вопрос по интерфейсу
я в плане того что будет если (-1) больше чем (1) .. будет вылет с ошибкой или чего ?
Время ведет!
-
- Заслуженный деятель интернет-сообщества
- Сообщения: 5188
- Зарегистрирован: 29 мар 2005, 17:49
- Откуда: SPB galaxy spb
Re: Вопрос по интерфейсу
Ну если сделано нормально то ниче не будет. Просто где то раньше чем нужно таблица освободится из памяти. Но обычно ставят +1-1 на расстоянии одной строки - сложно ошибиться.
Re: Вопрос по интерфейсу
ноль счетчик не изменитMasygreen писал(а):а просто написать mtChangeRefCount(#TabExcel,0) - не прокатит?