Проблемы с GOSUB "неверное число аргументов"
Решил сделать отдельной темой, так как в “Как сделать?” уже чёрт ногу сломит.
В других темах ответа на вопрос не нашел. Может плохо искал? Не может же быть, что у одного меня такая проблема.
В хелпе тоже ничего об этом не сказано.
Проблема такая:
Есть строка наподобие gosub ‘subprogram’,$пар1,$пар2,пар3,пар4,пар5,$пар6,пар7,пар8,$пар9,gfh10
При попытке её выполнить QSP выдает “Неверное число аргументов оператора / функции”, Код ошибки: 120
Убираю пару последних параметров и всё работает.
Вопрос в следующем: не возможность передавать в args[] больше десяти (или девяти?) параметров - это так и должно быть, или это глюк, баг, ошибка?
Да, число параметров ограничено.
Это не баг и не глюк, в QSP действительно существует ограничение на максимальное число аргументов.
Нельзя использовать более 10 аргументов: строка “subprogram” - считается за первый аргумент, и т.д.
Спасибо за ответы. Жаль только, что в справке об этом не упоминалось.
Справка далека от совершенства, да.
Nex:
Это не баг и не глюк, в QSP действительно существует ограничение на максимальное число аргументов.
Нельзя использовать более 10 аргументов: строка “subprogram” - считается за первый аргумент, и т.д.
Т.е. непосредственно аргументов может быть только 9.
Olegus t.Gl.:
Т.е. непосредственно аргументов может быть только 9.
Аргументов не может быть более 10, но в массив ARGS на данный момент нельзя передать более 9 значений.
Это лишь следствие ограничения на максимальное количество аргументов в записи любого оператора или функции, равное 10, и никак не влияет на использование массива ARGS.
Чтобы пояснить разницу:
1. Допустим, у нас есть оператор “MEGAGOSUB”, первый аргумент которого - имя локации, а второй - количество раз, которое должна быть вызвана локация.
Записывается так
DOUBLEGOSUB 'первая', 5, <параметры>
При этом, мы можем передать в локацию “первая” 8 параметров, т.к. максимальное количество аргументов - 10.
2. Допустим, у нас есть оператор “RUNCOUNTER”, который выполняет локацию, имя которой уже задано соотв. переменной.
Записывается так
RUNCOUNTER <параметры>
При этом, мы можем передать в локацию-счетчик 10 параметров, т.к. максимальное количество аргументов - 10.
Т.к. у каждого из ныне существующих в QSP операторов и функций, позволяющих передачу пользователем значений в массив ARGS, первым аргументом идет строка(имя локации, либо готовый код), то остается 9 “свободных мест” для пользовательских значений.
Nex:
Olegus t.Gl.:
Т.е. непосредственно аргументов может быть только 9.
Т.к. у каждого из ныне существующих в QSP операторов и функций, позволяющих передачу пользователем значений в массив ARGS, первым аргументом идет строка(имя локации, либо готовый код), то остается 9 “свободных мест” для пользовательских значений.
Ну так именно это я и сказал, зачем усложнять-то? И именно это и интересует обычно пользователей в контексте темы “сколько аргументов я могу передать в функцию”.
Olegus t.Gl.,
разницу между твоим высказыванием и тем, что есть на самом деле, я уже выше подробно разжевал.
Твое высказывание “непосредственно аргументов может быть только 9” не соответствует действительности.
Тема закрыта.