-
ещё один вопрос.
имеется такая строчка:
10 INPUT g: IF g<0 OR g>255 THEN GO TO 10
вводится значение g от 0 до 255.
но, есть ошибка.
если ввести вместо цифр какие-то буквы или команду - программа вывалится в ошибку.
как-то можно запретить вводить в INPUT буквы и команды ?
-
Можно запрашивать строку, а потом конвертить в число (обрабатывая "ошибки"), но это тоже не панацея.
-
ZEman, обязательно нужен ручной ввод числового значения?
Как вариант, можно организовать его как ввод симовольной переменной с последующим преобразованием в число. Правда, получится, весьма громоздкая конструкция.
- - - Добавлено - - -
Например, вот такая:
10 INPUT LINE g$: IF LEN g$<1 OR LEN g$>3 THEN GOTO 10
12 IF LEN g$=3 AND CODE g$(1)>47 AND CODE g$(1)<51 THEN
IF CODE g$(2)>47 AND CODE g$(2)<54 THEN
IF CODE g$(3)>47 AND CODE g$(3)<54 THEN
LET g=(CODE g$(3)-48)+(CODE g$(2)-48)*10+(CODE g$(1)-48)*100: GOTO 22
14 IF LEN g$=2 AND CODE g$(1)>47 AND CODE g$(1)<58 THEN
IF CODE g$(2)>47 AND CODE g$(2)<58 THEN
LET g=(CODE g$(2)-48)+(CODE g$(1)-48)*10: GOTO 22
18 IF LEN g$=1 AND CODE g$(1)>47 AND CODE g$(1)<58 THEN
LET g=CODE g$(1)-48: GOTO 22
20 GOTO 10
22 STOP
-
Есть же функция преобразования символов в чисто, правда не помню, как она реагирует на нецифровые символы.
-
Black Cat / Era CG, есть обратная функция - STR$.
Беда в том, что команда INPUT, может принимать в качестве входных числовых данных, любую белиберду. Алгебраические выражения и имена переменных.
-
Видимо потом буду делать через inkey$ и let.
Так меньше проблем будет.
-
ZEman, я же, тремя сообщениями выше накидал рабочий вариант. Чем не нравится? :)
-
null_device, вариант неплохой.
но, Я стремлюсь к тому чтобы выжать из программы как можно больше свободной памяти, сохранив при этом все имеющеюся фишки программы.
то-есть ничего не удаляется, весь функционал остаётся тем-же, но при этом получаешь больше памяти.
-
Через INKEY$ самое нормальное.
А если INPUT A$, то выводятся поганые кавычки еще, раздражали в своё время.
В ZX Like Pascal, кстати, я решил эту проблему кардинально во встроенной процедуре обработки ошибок. Если для числовой переменной A юзер вводит в readln(A) не число или число больше, чем поддерживает тип, то его введенная строка стирается и запрашивается заново.
-
Вложений: 1
Rararura 1.9.5
новая версия программы.
изменений не так много, в основном я занимался оптимизацией программы и старался получить в ней как-можно больше свободной памяти.
также исправил пару серьёзных ошибок программы и сделал её намного быстрей.
список изменений:
- исправлена ошибка с установкой символа в нижнем правом углу, в текстовом редакторе.
- исправлена ошибка с загрузкой нового шрифта при выборе символов для Multiselect mode.
- исправлена ошибка с выбором главного символа.
- удалён режим отладки для поворота символов.
- большая оптимизация программы.
- небольшой прирост скорости в работе программы.
- получено почти 7 кб свободной памяти.
через пару - тройку месяцев выпущу ещё одну, скорее всего последнюю версию данной программы, в которой я добавлю много интересного.