powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Как преобразовать?
12 сообщений из 12, страница 1 из 1
Как преобразовать?
    #35483482
CacheLot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть выражение, которе не работает, и как сделать так что бо оно работало?
Код: plaintext
1.
2.
3.
w $LL($QS("^Index(5,0,""$lb(1,3,4,5,11)"")", 3 ))
^
<LIST>

Тестировал в терминале. А так прекрасно работает:
Код: plaintext
1.
2.
w $LL($lb( 1 , 3 , 4 , 5 , 11 ))
 5 

То есть, наверное суть в том как получить из ,""$lb(1,3,4,5,11)"" - $lb(1,3,4,5,11) ??
...
Рейтинг: 0 / 0
Как преобразовать?
    #35483532
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CacheLotкак получить из ,""$lb(1,3,4,5,11)"" - $lb(1,3,4,5,11) ??
Как вариант

Код: plaintext
1.
s val="$lb(1,3,4,5,11)"
x "s lb="_val
...
Рейтинг: 0 / 0
Как преобразовать?
    #35483569
CacheLot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я кстати уже не первый раз с такой проблемой сталкиваюсь...Не воспринимает строку в качестве аргумента функции, хотя и явных кавычек в аргументе вроде б и нет:
Код: plaintext
1.
2.
w $QS("^Index(5,0,""$lb(1,3,4,5,11)"")", 3 )
$lb( 1 , 3 , 4 , 5 , 11 )
Должно же что то быть?
...
Рейтинг: 0 / 0
Как преобразовать?
    #35483688
CJIECAPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Оно и не должно работать - вы функции $LL отдаёте в качестве параметра строку "$lb(1,3,4,5,11)", а не результат выполнения функции $lb(1,3,4,5,11)
Как уже советовали - XECUTE надо делать или так:
$LL($QS("^Index(5,0,"""_$lb(1,3,4,5,11)_""")",3))
но тогда теряется смысл выражения. Зачем вы храните такие строки в индексах? Почему бы не хранить результат выполнения этих функций?
...
Рейтинг: 0 / 0
Как преобразовать?
    #35483691
Игорь Сойников
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего так:
w $LL($QS("^Index(5,0,"_$lb(1,3,4,5,11)_")",3))
или
s a=$lb(1,3,4,5,11) W $LL($QS("^Index(5,0,a)",3))
...
Рейтинг: 0 / 0
Как преобразовать?
    #35483742
CJIECAPb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь СойниковСкорее всего так:
w $LL($QS("^Index(5,0,"_$lb(1,3,4,5,11)_")",3))
или
s a=$lb(1,3,4,5,11) W $LL($QS("^Index(5,0,a)",3))
ёпт
ни так ни так работать не будет. $QS - это не какая то косвенная функция. Насколько я понимаю это такая же строковая функция как $PIECE, $LL или $FIND и отличается от них только тем что парсит строки специального вида, коими и являются имена глобалей. Она не делает подстановок переменных и ей наплевать есть такая глобаль или нет. Максимум что она делает дополнительно - это проверяет строку на корректность. Соответственно у вас она в обоих случаях сругнётся на третий аргумент, ибо строка "а" и строка, являющаяся результатом выполнения $lb(1,3,4,5,11), должны заключаться в кавычки.
...
Рейтинг: 0 / 0
Как преобразовать?
    #35483767
Игорь Сойников
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ошибочка вышла (все спешка):
w $LL($QS("^Index(5,0,"""_$lb(1,3,4,5,11)_""")",3))
дает ответ 5
...
Рейтинг: 0 / 0
Как преобразовать?
    #35484024
Фотография krvsa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сильно смахивает на подземный ход на чердак...
----------
Cache for Windows (x86-32) 2007.1.3 (Build 607) Wed Oct 17 2007 02:12:09 EDT
...
Рейтинг: 0 / 0
Как преобразовать?
    #35484285
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Скорее всего "^Index(5,0,""$lb(1,3,4,5,11)"")"
будет выдавать другая функция, например $Q, поэтому текстовую часть на список менять так запросто нельзя.

QS это действительно просто текстовая функция
Можно также ее результат обрабатывать текстовыми функциями
Код: plaintext
w $L($QS("^Index(5,0,""$lb(1,3,4,5,11)"")",3),",")

а для обращения к 5 элементу:
Код: plaintext
w $P($tr($QS("^Index(5,0,""$lb(1,3,4,5,11)"")",3),"()"),",",5)
...
Рейтинг: 0 / 0
Как преобразовать?
    #35484292
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
соврал конечно, при выборе первого элемента будет лажа, но идея понятная.

пока мне больше всего нравится первое решение
...
Рейтинг: 0 / 0
Как преобразовать?
    #35484330
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по идее должно работать
Код: plaintext
w $LL(@($QS("^Index(5,0,""$lb(1,3,4,5,11)"")",3)))
Но не работает
так же как работает
Код: plaintext
w @"1+1"
но не работает
Код: plaintext
s x=@"1+1"

Не понимаю че-то пока, попробую глянуть в доках
...
Рейтинг: 0 / 0
Как преобразовать?
    #35484339
Блок А.Н.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вроде как дело в том, что косвенность поддерживается не везде

Код: plaintext
1.
2.
w @"1+1" ;- здесь косвенный аргумент оператора
s @"y"= 1  ;здесь тоже косвенный аргумент оператора
s y=@"1+1" ;- а здесь не пойми что

думаю в этом случае нужно превратить выражение в агрумент.
Скорее всего буде работать:
Код: plaintext
1.
2.
3.
4.
5.
eval(str)
{q @str
}


w $LL($$eval($QS("^Index(5,0,""$lb(1,3,4,5,11)"")", 3 )))
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / Как преобразовать?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]