(28.03.2021 16:40)daemon_n Wrote: [ -> ]Bes, Raistlin, ребята, спасибо, получилось (как ни странно) 
Нет, товарищи, так дело не пойдёт. Оставьте Вы этот ужас . Вариант Беса — неопределённое поведение и игра с памятью, которая давно могла быть освобождена. Остальные варианты тоже ужасны. А глянуть, как куча функций в Era Erm Framework принимают строки?
Для очень старых скриптов всегда можно было передать индекс глобальной или ERT z-переменной в функцию.
В Эре 3 строки можно передавать напрямую.
А что делать, если Вы хотите объединить две строки произвольного размера? Локальные строки по 511 байт могут обрезать текст.
Тогда можно создать глобальную временную z-переменную с огромным индексом, которая будет доступна только для чтения и будет уничтожена по выходу из триггера.
Но что делать, если мы хотим вернуть строку из функции? Например, функция будет принимать имя героя и возвращать строку «Dear, [Name], your time is over».
По выходу из функции везде, где применялся синтаксис возврата строки вида P.../?z(...)/.../?s^...^ функция трактует конечные значения x-параметров как индексы z-строк. Сами строки копируются во временное хранилище, а оттуда уже присваиваются указанным при вызове переменным.
А что есть нового по глобальным массивам?
Мне надо сделать массив на десяток текстовых элементов - всё ещё через !!SN:M?
Berserker, я, честно сказать, не понимаю, а где вывод текста?
Berserker, спасибо - это понял.
А выставить добавление в след пустой слот можно через команду какую-нибудь или надо проверять каждый раз, свободен ли он? (разные триггеры)
UPD: Почему не работает заполнение через re i или иную другую переменную?
Мне надо заполнить определённый элемент массива, номер которого я не могу задать точно.
Спасибо! Странно, что сразу не сработало
А есть ли возможность сравнить 2 текстовых переменных?
Мне надо сделать так, чтобы не было повторной подгрузки файла, уникальное имя которого уже использовалось
Сохрани их в s^temp^ и s^temp2^, сравни s^temp^=s^temp2^, а в конце обнули обе через s^temp^:S^^.
Berserker, эти переменные какие-то особенные? Просто я делал так же со своими именованными.
Хотя я вчера кодил сутки напролет. Естественно мог ошибиться
daemon_n, обычные глобальные именованные переменные SN:W.
s^...^ - строковые. Можно использовать почти везде, где используются z-переменные, кроме установок подсказок и описаний старыми ЕРМ командами.
(28.03.2021 20:46)Berserker Wrote: [ -> ]daemon_n, да.
А как удалить массив, не зная его ID?
Надо ли вообще их удалять?
И полезно ли постоянно изменять его размеры?
У меня функция использует, можно сказать, 3 динамических массива.
Изначально объявил кол-во элементов = 0.
Перед добавлением элемента я увеличиваю размер на +1
как только массив перестаёт быть нужен, ставлю кол-во элементов = 0.
Как именно правильно поступать в таких ситуациях с точки зрения здорового кода?
Массивы выбрал, потому что работа с текстами.