Индексные переменные

пользователь
Регистрация: 26.02.2006

Здравствуйте!

Возникла такая проблема.
Давным-давно (лет 5 назад) был создан бланк.
Его суть.
Есть текстовый файл. В бланке есть поля вывода типа вывод!1 ... вывод!10.
В формульной части при помощи цикла й=1,10 читается каждая строка файла и выводится в соответствующее поле:

ЦИКЛ ДЛЯ(й=1,10)
вывод!й=файл.Считать
КОНЕЦ_ЦИКЛА

Пришла необходимость внести в этот бланк изменение.
И после сохранения индексы перестали выводиться!
Проверял через вывод СООБЩЕНИЕ - индексы формируются,
правильно записываются но в поля на бланке не выводятся!
Я так понимаю - в самой платформе что-то поменялось при работе в индексными переменными.
Но что - понять не могу! Прошу подсказки!

дилер
Регистрация: 29.05.2013

Попробуйте бланк в режиме интерпретатора запустить. Если поля( графы) бланка называются вывод1...вывод10, то в режиме интерпретатора они будут заполнены значениями переменных вывод!1...вывод!10, а после компиляции нет.

пользователь
Регистрация: 26.02.2006

Михаил спасибо!
Я просто переключил бланк на режим интерпретатора, и все сразу заполнилось. Даже имена полей не исправлял.
Странная конечно ситуация..

дилер
Регистрация: 29.05.2013

Из Help о компиляторе:
"Компилятор производит разыменование данных - переменных и функций. Для отладки программы предусмотрена возможность хранить в коде имена переменных и функций, а также ссылки на исходный текст. Разыменование данных существенно ускоряет доступ к переменным и функциям. Доступ осуществляется по внутреннему номеру (адресу) переменной или функции, который назначает компилятор. Упаковка данных в линейную структуру позволяет избежать перебора при поиске по номеру. Интерпретатор же производил поиск переменных и функций по имени методом деления пополам.

Разыменование данных не могло не сказаться на индексных переменных, т.к. сама идея их действия была основана на именах. Отныне под именем индексной переменной будем понимать ее префикс. В связи с этим а!001 и а0!01 не одно и то же, как это было раньше, а две разные индексные переменные а и а0. В рамках одной индексной переменной поиск осуществляется по строке индекса методом деления пополам. Поэтому с увеличением количества элементов индексной переменной возрастает время доступа к элементу."

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

модератор
Регистрация: 06.09.2007

И после сохранения индексы перестали выводиться!
Проверял через вывод СООБЩЕНИЕ - индексы формируются,
правильно записываются но в поля на бланке не выводятся!
Я так понимаю - в самой платформе что-то поменялось при работе в индексными переменными.

Такая ошибка была в версии 8.805. Исправлена в 8.806.

пользователь
Регистрация: 26.02.2006

Здравствуйте!

Проверил - действительно 8.805 стоит.
Надо будет обновиться.

Спасибо за подсказку!

пользователь
Регистрация: 26.02.2006

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

Бланк писался лично мной и под компилятор.
Г-н Бурлак уже выше ответил, что это была ошибка в самой программе.