FireURQ Bugtracker

Просмотр подробностей проблемы перейти к комментариям ] история изменений ] печать ]
НомерПроектКатегорияВидимостьСозданИзменен
0000077FireURQинтерпретаторобщая2009-08-29 22:052009-09-05 10:49
ИнициаторBest 
Ответственныйfireton 
ПриоритетобычныйСерьезностьмалаяВоспроизводимостьвсегда
СостояниезакрытРешениерешен 
ПлатформаОперационная системаВерсия ОС
Версия продукта1.0.6 
Целевая версия1.0.7Решен в версии1.0.7 
Суть0000077: Действия с длиной строки
ПодробностиНе уверен баг это или нет, но я получаю вот такой результат:

instr x=k
pln #%x$ #x$ #x+1$

>>k 1 1

Когда хочу получить такой:
>>k 1 2

Прав я или урка?
МеткиНет прикрепленных меток.
Вложенные файлы

- Связи

-  Комментарии
(0000092)
Nolite (инициатор)
2009-08-30 00:02

Может, это прояснит ситуацию:

instr x=k
pln #%x$ #x$ # #x$+1$ #%x+1$

>>k 1 2 k
(0000093)
fireton (администратор)
2009-08-30 00:45

Наверное, прав ты. Будем посмотреть.
(0000094)
frodo (инициатор)
2009-08-30 01:08
изменен: 2009-08-30 01:18

Конструкцию " #x+1$ " фурка и досурка обрабатывают одинаково. Разница только в том, что для фурки х=1 (длина строковой переменной), а для досурки х=0 (для любой строки). "1" в ответе фурки означает, что при сложении строковой и численой переменной строковая не изменилась (как и должно быть), и ее длина по-прежнему равна одному символу
А вот конструкцию #%x+1$ досурка не понимает (в отличие от фурки!), ей нужно что-то вроде

y = x + 1
pln #%y$

только тогда выводится "k". Так что, получается, фурка ведет себя даже лучше(?) досурки.

Права урка!

(0000095)
Best (инициатор)
2009-08-30 10:31

>pln #%x$ #x$ # #x$+1$ #%x+1$
про # #x$+1# я знаю, но это выглядит как-то нелепо, к тому же легко написать ##x$+1$, что вызовет ошибку

>при сложении строковой и численой переменной строковая не изменилась (как и должно быть), и ее длина по-прежнему равна одному символу
я ведь не пытаюсь изменить длину, я пытаюсь всего лишь вывести число равное длине плюс адин
(0000096)
frodo (инициатор)
2009-08-30 10:55
изменен: 2009-09-04 16:16

UPD: Давай по-порядку. Что происходит, если интерпретатор встречает "#x+1$" ?
1. Берет значение х. Как видно из программы, х = "k".
2. Складывает строку "k" с числовой константой 1. А как представить текстом число? Тут есть два варианта:
3а. Пустой строкой, как любую необъявленную переменную, т.е. имеем выражение "k" + "" = "k". Тогда длина строки "#x+1$" будет равна длине строки "k", т.е. единице.
3б. Соотв. символом, в нашем случае "1". Тогда да, x+1 = "k1", и его длина #x+1$ = len("k1") = 2. Но тогда и #x+2$ = len("k2") = 2; где len() - длина строки.
IMHO, результат программы -- это случай 3а. 3б. -- это бесполезный теоретический вариант.

UPD(2): А "длина строки плюс один" это #x$+1, заключенное в #$, т.е. ##x$+1$.

(0000104)
fireton (администратор)
2009-09-04 16:33

Короче вот что. Решатель видел, что первое значение - строка и включал режим сложения строк. Второе значение он пытался тоже представить строкой. Но строковое представление числа - пустая строка (так в досурке). Поэтому результатом получалось первоначальное значение ("k").

Теперь режим сложения строк включается только в случае, если оба операнда - строки. В противном случае он включает режим сложения чисел. А числовое значение строки - всегда длина строки (в фурке). Поэтому результат будет правильный.

- история изменений
Дата изменения Пользователь Поле Изменить
2009-08-29 22:05 Best Новый инцидент
2009-08-29 22:05 Best Ответственный => fireton
2009-08-30 00:02 Nolite Комментарий добавлен: 0000092
2009-08-30 00:45 fireton Комментарий добавлен: 0000093
2009-08-30 00:45 fireton Состояние новый => назначен
2009-08-30 00:45 fireton Целевая версия => 1.0.7
2009-08-30 01:08 frodo Комментарий добавлен: 0000094
2009-08-30 01:09 frodo Комментарий изменен: 0000094
2009-08-30 01:10 frodo Комментарий изменен: 0000094
2009-08-30 01:18 frodo Комментарий изменен: 0000094
2009-08-30 10:31 Best Комментарий добавлен: 0000095
2009-08-30 10:55 frodo Комментарий добавлен: 0000096
2009-08-31 17:23 frodo Комментарий изменен: 0000096
2009-09-04 13:49 frodo Комментарий изменен: 0000096
2009-09-04 16:16 frodo Комментарий изменен: 0000096
2009-09-04 16:33 fireton Комментарий добавлен: 0000104
2009-09-04 16:33 fireton Состояние назначен => отработан
2009-09-04 16:33 fireton Решен в версии => 1.0.7
2009-09-04 16:33 fireton Решение открыт => решен
2009-09-05 10:49 fireton Состояние отработан => закрыт


Copyright © 2000 - 2024 MantisBT Team
Powered by Mantis Bugtracker