Вопрос по интерфейсу

Программирование на Атлантисе (VIP, FCOM, ARD), FastReport

Модераторы: m0p3e, edward_K, Модераторы

Ответить
Ruslan_V
Посетитель
Сообщения: 45
Зарегистрирован: 01 июн 2009, 17:11

Вопрос по интерфейсу

Сообщение Ruslan_V »

Добрый день! Возник такой вопрос. В ард-отчете вызываю свой интерфейс, в котором есть 2 кнопки для выбора подразделения (склад-отправитель и склад-получатель). Нреки помеченных складов загоняю в 2 временные таблицы. Но когда нажимаю в интерфейсе ОК и закрываю интерфейс, чтоб продолжить формирование отчета, в этих таблицах уже ничего не хранится. Похоже, что при закрытии интерфейса происходит очистка этих таблиц. Таблицы описаны в проектном файле. Может нужно указать какой-то параметр интерфейса? подскажите пожалуйста.
galover
Местный житель
Сообщения: 794
Зарегистрирован: 16 ноя 2007, 13:52

Re: Вопрос по интерфейсу

Сообщение galover »

mtChangeRefCount
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Re: Вопрос по интерфейсу

Сообщение Masygreen »

Код: Выделить всё

mtChangeRefCount(#TabExcel,1); 
Время ведет!
n0where
Местный житель
Сообщения: 499
Зарегистрирован: 30 дек 2010, 08:16

Re: Вопрос по интерфейсу

Сообщение n0where »

маркеры поюзать
хороший программист — это человек, который переходя улицу с односторонним движением смотрит в обе стороны
RAJAH
Местный житель
Сообщения: 932
Зарегистрирован: 18 фев 2008, 12:49

Re: Вопрос по интерфейсу

Сообщение RAJAH »

Было как-то: мне слово 'local' в описании временной таблицы мешало. Темку создавал даже.
Ruslan_V
Посетитель
Сообщения: 45
Зарегистрирован: 01 июн 2009, 17:11

Re: Вопрос по интерфейсу

Сообщение Ruslan_V »

Спасибо огромное. mtChangeRefCount помогло справиться с проблемой. А нужно ли по завершении формирования отчета изменять количество ссылок на таблицу до 0, т.е. mtChangeRefCount(#tpodr,0); ? Или смысла нет и временная таблица все равно удаляется?
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Вопрос по интерфейсу

Сообщение edward_K »

а проверить то легко - если при повторном входе в фейс число записей 0 - значит не надо. А вообще на всякий случай чистите принудительно при входе и выходе.
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Re: Вопрос по интерфейсу

Сообщение Masygreen »

ни когда не чистил :) (это не означает что так правильно делать)
Время ведет!
LaaLaa

Re: Вопрос по интерфейсу

Сообщение LaaLaa »

Если данные больше не нужны обязательно надо чистить. Иначе до конца сеанса Галактики будет зря расходоваться память.

Если вы увеличивали счетчик на единицу mtChangeRefCount(#TabExcel,1), то чтобы почистить надо уменьшить на единицу mtChangeRefCount(#TabExcel,-1)
Процедура mtChangeRefCount

Назначение
Увеличивает /уменьшает счетчик ссылок на экземпляр данных таблицы в памяти. Если счетчик ссылок = 0, то экземпляр освобождается. Система ведет два счетчика ссылок - один для прикладного, другой для системного использования. Таким образом, система не позволяет освободить экземпляр таблицы в памяти до тех пор, пока на нее есть хотя бы одна реальная ссылка.

Описание
function mtChangeRefCount(iTable : integer; iCount : integer) : longInt;

Параметры
iTable - номер узла в логической таблице;
iCount - значение, на которое надо увеличить /уменьшить значение счетчика ссылок на экземпляр таблицы в памяти.

Возвращает новое значение счетчика ссылок.
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Re: Вопрос по интерфейсу

Сообщение Masygreen »

LaaLaa писал(а):Если данные больше не нужны обязательно надо чистить. Иначе до конца сеанса Галактики будет зря расходоваться память.

Если вы увеличивали счетчик на единицу mtChangeRefCount(#TabExcel,1), то чтобы почистить надо уменьшить на единицу mtChangeRefCount(#TabExcel,-1)
а просто написать mtChangeRefCount(#TabExcel,0) - не прокатит? если надо делать -1 то можно и запутаться в количестве?
Время ведет!
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Вопрос по интерфейсу

Сообщение edward_K »

-1 как раз для того чтобы не запутаться. Мож ваш фейс еще откуда то вызовется где эта же табла - там тоже делаете +1-1.
Masygreen
Местный житель
Сообщения: 1089
Зарегистрирован: 04 сен 2008, 11:27
Откуда: Москва
Контактная информация:

Re: Вопрос по интерфейсу

Сообщение Masygreen »

я в плане того что будет если (-1) больше чем (1) .. будет вылет с ошибкой или чего ?
Время ведет!
edward_K
Заслуженный деятель интернет-сообщества
Сообщения: 5187
Зарегистрирован: 29 мар 2005, 17:49
Откуда: SPB galaxy spb

Re: Вопрос по интерфейсу

Сообщение edward_K »

Ну если сделано нормально то ниче не будет. Просто где то раньше чем нужно таблица освободится из памяти. Но обычно ставят +1-1 на расстоянии одной строки - сложно ошибиться.
LaaLaa

Re: Вопрос по интерфейсу

Сообщение LaaLaa »

Masygreen писал(а):а просто написать mtChangeRefCount(#TabExcel,0) - не прокатит?
ноль счетчик не изменит
Ответить