Инструменты пользователя

Инструменты сайта


msx:basic_dialogue_programming_language:205

Это старая версия документа!


Первая страницаПредыдущая страницаНазад к обзоруСледующая страницаПоследняя страница

2.5. Сообщения об ошибках в системе MSX BASIC

FIXME


Дать подходящее сообщение об ошибке —
верх справедливости.

Старая пословица


Получив сообщение об ошибке,
сохраняйте спокойствие.

Маленькая хитрость

Код Сообщение Описание
1NEXT without FOR
(NEXT без FOR).
Встречен оператор NEXT, но отсутствует переменная, определенная посредством оператора FOR. Переменная в операторе NEXT не соответствует никакой ранее выполненной и не имеющей пары переменной оператора FOR. Либо в программе слишком много NEXT, либо ошибка в переменной, следующей за NEXT.
2Syntax error
(Синтаксическая ошибка).
Строка содержит неправильную последовательность символов (например, непарные скобки, неправильно написанная команда или опера тор,неверная пунктуация и т.д.).
Причиной ошибки является либо незнание синтаксиса, либо простая описка!
3RETURN without GOSUB
(RETURN без GOSUB).
Встречен оператор RETURN, для которого нет предыдущего, не связанного в другой паре,оператора GOSUB. Это,например,происходит когда конец основной программы и начало подпрограммы не разделены посредством END.
4OUT of DATA
(Исчерпаны данные DATA).
При выполнении оператора READ в операторе DATA не хватает данных.
В программе отсутствует RESTORE или условие прекращения действия оператора READ.
5Illegal function call
(Неправильный вызов функции).
Это сообщение появляется обычно в том случае, если аргумент функции выходит за установленные пределы.
Данная ошибка может произойти в следующих случаях:
  1. 1) отрицательный или слишком большой индекс;
  2. 2) отрицательный или нулевой аргумент в функциях LOG и SQR;
  3. 3) обращение к функции USR, для которой не задан начальный ад рес;
  4. 4) использование операторов ERASE, SWAP, VARPTR с неопределенной (неиспользуемой) переменной;
  5. 5) неправильный аргумент в операторах MID$, RIGHT$,LEFT$, INP, OUT, WAIT, PEEK, POKE, TAB, SPC, STRING$, SPACE$, INSTR, ON…GOTO(GOSUB);
  6. 6) в операторах GET или PUT записано отрицательное число;
  7. 7) в режимах SCREEN0 или SCREEN1 использованы графические команды/операторы;
  8. 8) неправильные переменные в GML (графический макроязык) или в MML(макроязык музыки);
  9. 9) использование SPRITE$ в режиме SCREEN 0.
6Overflow
(Переполнение).
Результат вычисления превосходит формат представления числа в BASIC. Если появляется UNDERFLOW (потеря всех значащих цифр), то результат принимается равным нулю и выполнение программы продолжается без сообщения об ошибке.
7Оut of memory
(Выход за пределы памяти).
Программа слишком велика или содержит слишком много переменных (слишком большие массивы), слишком много циклов FOR…NEXT, переходов GOSUB (для которых требуются метки переходов в стеке). Иногда этого можно избежать, записывая массивы в файлы на дискете, исправляя распределение памяти соответствующими операторами CLEAR или записывая подпрограммы в двоичные файлы. В некоторых случаях можно хранить данные в неиспользуемых областях видеопамяти (VRAM).
8Undefined line number
(Не определен номер строки).
Обращение к несуществующей строке в операторах GOTO,GOSUB,IF…THEN…ELSE или DELETE. Новая строка, которая содержит только номер строки, также вызывает это сообщение.
Обратите внимание, что команда RENUM обнаруживает недостающие переходы!
9Subscript out of range
(Выход за пределы массива).
Обращение к элементу массива с индексом, превышающим размерность массива или с недопустимым количеством индексов.
  10    Redimensioned array  (Повторное задание размерности массива).
        ───────────────────
        Один и тот же  массив  упоминается  в двух операторах  DIM или ис-
        пользуется оператор  DIM для массива, который ранее был определен
        по умолчанию.
           Для изменения размерности  массива  его  нужно  предварительно
        уничтожить с помощью оператора ERASE.
  11    Division by zero  (Деление на нуль).
        ────────────────
        В выражении встречается деление на нуль, или  возведение  нуля  в
        отрицательную степень (нуль в нулевой степени принимается  равным
        1). Помните, что значение будет приравнено нулю, если оно  меньше
        минимального числа, представимого в компьютере MSX ("машинного ну-
        ля").
  12    Illegal direct  (Неправильная команда  в режиме непосредственного
        ──────────────   выполнения).
        В качестве команды режима  непосредственного  выполнения  встреча-
        ется  оператор, недопустимый в этом режиме (например, DEFFN).
  13    Type mismatch  (Несоответствие типа). 
        ─────────────
        Присвоение  строковой переменной числового значения  или наоборот;
        аргументу функции, которому должно быть присвоено числовое  значе-
        ние, присваивается строковое значение и наоборот.
  14    Out of string space  (Исчерпано место для  строковых  переменных).
        ───────────────────
        Пространство в памяти,отведенное под строковые переменные по умол-
        чанию (200 байтов) или посредством CLEAR, исчерпано. Следует пере-
        задать размеры пространства, использовать файлы (дискету) или  за-
        писать строки в неиспользуемые области видеопамяти (VRAM).
  15    String too long  (Слишком длинная строка). 
        ───────────────
        Попытка создания строки длиной более  255  символов. Такая строка
        должна быть разделена на меньшие части.


  16    String formula too complex (Строковое выражение слишком сложно).
        ──────────────────────────
        Слишком длинное или слишком сложное строковое выражение. Его  сле-
        дует разбить на более  короткие выражения.
  17    Can't continue  (Продолжение невозможно).
        ──────────────
        Сделана попытка продолжения программы, которая:
         1) прервана из-за ошибки, а не по нажатию клавиши STOP или
        CTRL+STOP
         2) модифицирована после останова выполнения программы (Break);
         3) не существует.
  18    Undefined user function  (Неопределенная функция пользователя).
        ───────────────────────
        Вызов функции USR до того, как задано ее определение.
  19    Device I/O error (Ошибка устройства ввода/вывода).
        ────────────────
        Произошла ошибка во время операции ввода-вывода.Это может произой-
        ти, например, когда CTRL+STOP прерывает операцию чтения  с кассет-
        ной ленты.
  20    Verify error  (Ошибка верификации).
        ────────────
        Содержимое памяти или файла при проверке  оказывается другим. Эта
        ошибка может появиться при использовании команды CLOAD.
  21    No RESUME  (Отсутствует оператор RESUME).
        ─────────
        В программе обработки ошибок нет оператора RESUME.
  22    RESUME without ERROR  (Оператор RESUME при отсутствии ошибки).
        ────────────────────
        Оператор  RESUME  встречается прежде,чем запускается программа об-
        работки ошибок.
  23    Unprintable error (Ошибка без вывода текста сообщения).
        ─────────────────
        Насколько известно, такая ошибка может быть вызвана только в резу-
        льтате действия оператора ERROR (имитация ошибки).
  24    Missing operand  (Пропущенный операнд).
        ───────────────
        Выражение содержит оператор без последующих операндов; в команде/
        операторе отсутствуют обязательные параметры.
  25    Line buffer overflow  (Переполнение буфера строки).
        ────────────────────
        Попытка ввести с помощью оператора INPUT строку, содержащую более
        255 символов (из файла).
26-49   Unprintable error  (См. 23).
        ────────────────
  50    Field overflow  (Переполнение поля).
        ──────────────
        Попытка размещения оператором FIELD количества байтов,превышающее
        то, которое определено для записи в файл произвольного доступа.
  51    Internal error  (Внутренняя ошибка).
        ──────────────
        Неисправность. Произведите "сброс" нажатием  клавиши  RESET, либо 
        выключением компьютера.
  52    Bad file number  (Неправильный номер файла).
        ───────────────
        Оператор или команда обращается к файлу с  номером, для  которого
        не был выполнен оператор  OPEN, или этот номер превышает число,за-
        данное в операторе MAXFILES.


  53    File not found   (Файл не найден).
        ──────────────
        Оператор/команда LOAD,KILL,NAME или OPEN обращается к файлу,не су-
        ществующему на данной дискете.
  54    File already open  (Файл уже открыт).
        ─────────────────
        Оператор режима последовательного вывода OPEN задан для файла, ко-
        торый уже открыт таким оператором; либо оператор KILL относится к
        открытому файлу.
  55    Input past end   (Ввод после конца файла).
        ──────────────
        Оператор INPUT пытается прочитать больше данных, чем есть в файле. 
        Во избежание этой ошибки используйте функцию EOF для  обнаружения
        конца файла.
  56    Bad file name  (Неправильное имя файла).
        ─────────────
        В операторах LOAD, SAVE, KILL или OPEN использовано  неверное имя
        файла (например, имя файла,в котором слишком много символов).
  57    Direct statement in file (Оператор прямого режима в файле недопус-
        ────────────────────────  тим).
        Оператор прямого режима встречен  при  загрузке  файла  в формате
        ASCII оператором LOAD. Действие LOAD прекращается. Выдается также
        при попытке загрузить командой типа LOAD двоичный файл.
  58    Sequential I/O only  (Только последовательный ввод-вывод).
        ───────────────────
        Использование операторов GET или PUT для файла,который был открыт
        посредством оператора OPEN как последовательный файл.
  59    File not OPEN (Файл не открыт с помощью команды).
        ─────────────
        Команда (оператор) ввода/вывода  используется для  файла, который
        не был открыт оператором OPEN.
  60    Bad FAT (Неверная информация в FAT(таблице распределения файлов)).
        ───────
        Файловая таблица распределений FAT не в порядке. Вероятно,дискета
        не была инициализирована с помощью команды FORMAT.
  61    Bad file mode  (Неверный режим обращения к файлу).
        ─────────────
        Сделана попытка использовать операторы PUT, GET или LOF по отноше-
        нию к файлу последовательного  доступа, загрузить  командой  LOAD
        файл произвольного доступа, или выполнить оператор OPEN в неподхо-
        дящем файловом режиме.
  62    Bad drive name  (Неправильное имя дисковода).
        ──────────────
        Использовано неправильное имя дисковода.
  63    Bad sector number (Неправильный номер сектора).
        ─────────────────
        В последней версии дискового MSX-BASIC этой ошибки не должно быть!
  64    File still open  (Файл все еще открыт).
        ───────────────
        Файл не был закрыт оператором CLOSE.
  65    File already exists  (Файл уже существует).
        ───────────────────
        Имя файла,определенное в операторе NAME,является идентичным имени
        файла, уже имеющегося на дискете.
  66    Disk full  (Дискета заполнена до предела).
        ─────────
        RAM disk full (Виртуальный диск ОЗУ уже заполнен).
        ─────────────
  67    Too many files   (Слишком много файлов).
        ──────────────
        Попытка создания нового файла(использование команд SAVE или OPEN),
        когда все 255 элементов каталога заполнены.

  68    Disk write protected  (Дискета защищена от попыток записи).
        ────────────────────
        Дискета защищена от попыток записи.

  69    Disk I/O error  (Ошибка при вводе/выводе на дискету).
       ──────────────
        Неисправляемая ошибка, возникающая при выполнении операторов  вво-
        да-вывода на дискету.

  70    Disk offline (Дисковод в автономном режиме или выключен).
        ────────────
        RAM disk offLine  (Отключен виртуальный диск; ошибка для компьюте-
        ────────────────   ра серии MSX-2).

  71    Rename across disks  (Ошибка переименования файла).
        ───────────────────
        Сделана попытка переименования файла с новым идентификатором  дис-
        ковода. Это не допускается!

72-255  Unprintable error   (Ошибка без вывода текста сообщения). См.23 .

Внимание!

  1. 1. Сообщения об ошибках с кодами 60÷71 приведены для версии MSX-Disk BASIC. Для версии MSX-BASIC этим кодам соответствует сообщение об ошибке с номером 23:

    «Unprintable error».

  2. 2. На компьютерах MSX-2 имеется ошибка без соответствующего номера, сигнализирующая о невозможности подключения диска ОЗУ:

    «No RAM disk».

DELETEME

Текущий вариант

Текущий вариант

FIXME

[104] (стр. 191–192)

Код Сообщение Перевод Примечание
1NEXT without FORNEXT без FOR
2Syntax errorСинтаксическая ошибка
3RETURN without GOSUBRETURN без GOSUB
4Out of DATAИсчерпаны данные DATA
5Illegal function callНеправильный вызов функции
6OverflowПереполнение
7Out of memoryНедостаточно памяти
8Undefined line numberНесуществующий номер строки
9Subscript out of rangeВыход за пределы массива
10Redimensioned arrayПовторное задание размерности массива
11Division by zeroДеление на нуль
12Illegal directНеправильная команда в режиме непосредственного выполнения
13Type mismatchНесоответствие типа
14Out of string spaceИсчерпано место для строковых переменных
15String too longСлишком длинная строка
16String formula too complexСтроковая формула слишком сложна
17Cant continueПродолжение невозможно
18Undefined user functionНеопределённая функция пользователя
19Device I/O errorОшибка устройства ввода/вывода
20Verify errorОшибка контроля
21No RESUMEОтсутствует оператор RESUME
22RESUME without errorОператор RESUME при отсутствии ошибки
23Unprintable errorНеизвестная ошибка
24Missing operandПропущен операнд
25Line buffer overflowПереполнение буфера строки
26-49Unprintable errorНеизвестная ошибка
50Field overflowПереполнение поля
51Internal errorВнутренняя ошибка
52Bad file numberНеправильный номер файла
53File not foundФайл не найден
54File already openФайл уже открыт
55Input past endВвод после конца файла
56Bad file nameНеправильное имя файла
57Direct statement in fileКоманда вместо данных в файле
58Sequential I/O onlyТолько последовательный ввод/вывод
59File not OPENФайл не открыт
60Bad FATНеверная информация в FAT (таблице распределения файлов)
61Bad file modeНеверный режим обращения к файлу
62Bad drive nameНеправильное имя диска
63Bad sector numberНеправильный номер сектора
64File still openФайл все ещё открыт
65File already existsФайл уже существует
66Disk fullНет места на диске
67Too many filesСлишком много файлов
68Disk write protectedДиск защищён от записи
69Disk I/O errorДисковая ошибка ввода/вывода
70Disk offlineДиск отсутствует
71Rename across diskПереименование с одного диска на другой
72File write protectedФайл защищён от записи По [101] эти ошибки были определены в MSX Disk BASIC версия 2
73Directory already existsПапка уже существует
74Directory not foundПапка не найдена
75RAM disk already existsДиск ОЗУ уже существует
76Invalid device driverЭти ошибки определены в Nextor расширении Disk BASIC
77Invalid device or LUN
78Invalid partition number
79Partition already in use
80File is mounted
81Bad file size

:!: Во времена Ямаха КУВТ ошибки с номерами 72-255 не были определены и поэтому по ним выдавалось сообщение

«Unprintable error
(«Сообщение по данной ошибке не может быть напечатано»).


Первая страницаПредыдущая страницаНазад к обзоруСледующая страницаПоследняя страница

msx/basic_dialogue_programming_language/205.1676737245.txt.gz · Последние изменения: 2023-02-18 19:20 — GreyWolf