Ассоциация ЭБНИТ    ИРБИС-корпорация    Вики-Ирбис    Online/CHM справка Ирбис   
Система ИРБИС в целом :  ИРБИС Irbis
 
Ошибки в работе форматного вывода "G"
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 25, February, 2007 19:45

Рассмотрим следующий формат:

&uf('+1W960#','Первое',#'Второе',#'Третье',#'Четвёртое',#'Пятое'#),
(if p(g960) then g960,fi/),

Он возвращает:

Первое
Второе
Третье
Четвёртое
Пятое

Если оставить вместо "Четвертое" только букву "Ч", то формат возвращает всё кроме пятого повторения:

Первое
Второе
Третье
Ч

Если оставить четвертое повторение пустым, то оно пропускается и не выводится вообще(т. е. не выводится даже разрыв строки), а пятое, напротив начинает выводиться.

Другая ошибка проявляется при работе с функцией &uf('A. . . '). В ней не удаётся использовать параметры выделения текстового фрагмента. Например, &uf('Ag960.3#1') должна возвращать три первых буквы - "Пер", но она возвращает повторение целиком.

Таким образом, имеют место следующие ошибки:
1. Повторение, состоящее из одного символа, интерпретируется как последнее;
2. Повторение, не содержащее каких-либо значений, пропускается;
3. Не работают параметры выделения текстового фрагмента в функции &uf('A. . . ')

Re: Ошибки в работе форматного вывода "G"
Пользователь: ochagova (IP-адрес скрыт)
Дата: 26, February, 2007 16:00

Спасибо, Кирилл, за вашу тщательность и дотошность.
1. Это, действительно, ошибка. Причем, если писать (g960/) (как обычно и пишется в таком случае), то все нормально.
2. А это не ошибка. Когда вы работаете с реальными полями, то их поведение такое же: нет поля - ничего не выводится.
3. Это ошибка была для ИРБИС-32. Для ИРБИС-64 работает (упустили и не перенесли)
А.И. выставит обновления на FTP.

Re: Ошибки в работе форматного вывода "G"
Пользователь: Кирилл Соколинский (СЗТУ) (IP-адрес скрыт)
Дата: 28, February, 2007 02:11

ochagova написал(а):
-------------------------------------------------------
> > 2.Повторение, не содержащее каких-либо значений, пропускается;

> 2. А это не ошибка. Когда вы работаете с реальными
> полями, то их поведение такое же: нет поля -
> ничего не выводится.

Не могу согласиться с тем, что в случае с глобальными переменными это логично. Глобальная переменная, по сути, играет в ИРБИС Script ту же роль, что и массив в языках высокого уровня. Можно ли себе представить, чтобы при опустошении некоторых элементов массив уменьшался в размерах?
Предчувствуя возражения по поводу правомерности таких аналогий, сразу замечу, что я вовсе не предъявляю к ИРБИС Script те же требования, что и к другим языкам. Я только утверждаю, что близкие задачи в ИРБИС Script и прочих языках следует решать схожими средствами.

Если этого аргумента недостаточно, могу привести ещё один. Задача глобальной переменной - это сохранение некоторых данных в неизменном виде. С этим трудно не согласиться. Но тогда один и тот же формат НЕ ДОЛЖЕН ВОЗВРАЩАТЬ ПОСЛЕ ЗАПИСИ В ГЛОБАЛЬНУЮ ПЕРЕМЕННУЮ НОВЫЙ РЕЗУЛЬТАТ. А в настоящее время переменная похожа на чёрную коробку фокусника, в которую кладут кролика, а вынимают только уши...

Re: Ошибки в работе форматного вывода "G"
Пользователь: Карауш (IP-адрес скрыт)
Дата: 28, February, 2007 19:29

Хороший пример. Интересная ситуация может быть, я про такую даже не подозревал. И в правду, может стоит оставлять глобальные переменные с пустой строкой (с нулевой длиной, но посторение поля занято), пока они используются и лежат в памяти. А этап "убирания" пустых строк перенести на момент сохранения записи.

Re: Ошибки в работе форматного вывода "G"
Пользователь: ochagova (IP-адрес скрыт)
Дата: 01, March, 2007 10:59

По поводу пустой строки у нас (разработчиков) уже возникало обсуждение и А.И. считает, что существующая логика верная и меняться не будет.



Извините, только зарегистрированные пользователи могут писать в этом форуме.
This forum powered by Phorum.