Есть ли что-то, что я делаю неправильно, чтобы поднять эту ошибку? - PullRequest
1 голос
/ 23 октября 2019

Я новичок в Ti-basic и пытаюсь его кодировать. Я пытаюсь сделать эту программу «особого типа ввода». Это что-то вроде ввода, но оно будет показывать слово при нажатии (и нет необходимости вводить альфа) * ​​1001 *

Здесь приведен код, который, как мне кажется, относится к ошибке

:{41,42,43,51,52,53,54,55,61,62,63,64,65,71,72,73,74,75,81,82,83,84,85,91,92,93,94,102,103,103}→∟KEYS
:"ABCDEFGHIJKLMNOPQRSTUVWXYZθ :?"→Str7
:0→K
:""→Str1
:
:Repeat K=105
:getKey→K
:If max(∟KEYS-K)
:prgmFINDIND
:.........
:End

Внутри prgmFINDIND, это код

:1+sum(not(cumSum(∟KEYS=K)))→I
://I is used later on in the code. It isn't pertaining to the problem.

Я уже провел некоторое тестирование с паузой, и обнаружил, что проблема была в операторе if. Он возвращает ошибку «INVALID DIM».

Кто-нибудь знает, что не так?

1 Ответ

1 голос
/ 23 октября 2019

В этой части (немного отредактировано)

Repeat K=105
    getKey->K
    If max(|LKEYS=K
        prgmFINDIND
    Str1+sub(Str7,I,1->Str1
End

prgmFINDIND вызывается только в том случае, если нажатая клавиша находится в списке, в противном случае индекс I не изменяется (и, возможно, неявно)ноль, или любое другое значение, которое было оставлено там).

Нажатие GOTO на INVALID DIM фактически переходит к Str1+sub(Str7,I,1->Str1, указывая, что для индексации в Str7 использовался неверный индекс.

Itможно исправить с помощью блока If/Then, который может содержать более одного оператора:

Repeat K=105
    getKey->K
    If max(|LKEYS=K
    Then
        prgmFINDIND
        Str1+sub(Str7,I,1)->Str1
    End
End
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...