Ну, это внутренний баг паскаля. Но надо больше информации - сама по себе read
отлаживается без проблем (вроде).
Еще вопрос:
Для чего нужны эти константы:
R = #10;
N = #13;
Строки 41, 42
unit __RedirectIOMode;
PascalABCCompiler.Core v3.5.0.2101 (12.06.2019)
Киньте исходники программы, которая выдаёт ошибку
Спасибо!
begin
var a,b:integer;
read(a,b);
swap(a,b);
end.
Больше ничего. Конечно, программа смысла не имеет. Но кое - что я изучаю в стандартном модуле. Нашел такое исключение, поэтому хочется узнать причины, из - за которых оно возникает.
Можете подробно описать, как вы поймали это исключение? У меня всё нормально.
Ах, да. Еще вывела программа: [READLNSIGNAL]
Разработчикам всё равно для исправления нужно знать строку, которая вызвала исключение. А для этого нужно повторить исключение в дебаг-версии. Предоставьте, пожалуйста, полный алгоритм получения данного исключения.
У меня отлаживается нормально. Но ни у вас одного [READLNSIGNAL]
, это какая то плавающая ошибка, никак её не поймают.
На всяк, для начала, попробуйте обновится этим:
Win7+ : http://pascalabc.net/downloads/PascalABCNETWithDotNetSetup.exe
WinXP: http://pascalabc.net/downloads/PascalABCNETWithDotNet40Setup.exe
Ну и желательно сказать что вы установили и что у вас за система…
Если всё равно будет воспроизводится - есть ещё несколько вариантов поймать. В том числе - можно дать вам Debug версию.
Ещё, в момент отладки какой строки в каком модуле появляется эта ошибка?
Для разработчиков.
В файле VisualPascalABCNET\DockContent\OutputWindowForm.cs в процедуре, в которой произошло исключение, Substring встречается 2 раза:
Строка 126:
if ((text.Length > 0) && (ltext == text.Substring(0, text.Length - 1)))
Строка 144:
outputTextBox.Text = outputTextBox.Text.Substring(0, outputTextBox.Text.Length - ltext.Length) + InputTextBox.Text;
Разобрался, если на отладке на вводить значения переменных, то, соответственно, программа выдает то, что ничего не было введено, и строку [READLNSIGNAL], означающую запрос на ввод переменных. Программа также вывела эту строку, но необрабатываемого исключения больше не появлялось.
3 строка read(a,b)
Я говорю про внутренности read
.
Что значит на вводить? Много текста ввести или что?
И что что 2 раза?
Он про то, где эта ошибка может возникать. А считая что перед text.Substring(0, text.Length - 1)
есть условие - можно считать что ошибка может быть только в строке 144.
Или её там нет. Это - не тестирование, а гадание
Дедукция*
Ну да, не словив что то воспроизводимое - это бесполезно…
Снова поймал ошибку:
Стоит теперь обратить внимание на строку: Ввод данных: 34 4
Окно вывода: 4
34 остается с прошлой отладки, далее на ввод подается 4.
Исключение вышло на 59 строке модуля __RedirectIOMode
После нажатия кнопки Продолжить в окне вывода: 4[READLNSIGNAL].
Если по новой запустить отладку программы, не меняя уже сохранившуюся строку “Ввод данных”:34 4,
Но после этого, добавив еще число 4, в окне вывода: [READLNS34 4 4