Помощь новичкам


#1938

Ну, это внутренний баг паскаля. Но надо больше информации - сама по себе read отлаживается без проблем (вроде).


#1939

Еще вопрос:
Для чего нужны эти константы:
R = #10;
N = #13;
Строки 41, 42
unit __RedirectIOMode;
PascalABCCompiler.Core v3.5.0.2101 (12.06.2019)


#1940

Киньте исходники программы, которая выдаёт ошибку


#1941

Строка #13#10 на винде значит перенос строки.


#1942

Спасибо!


#1943
begin
var a,b:integer;
read(a,b);
swap(a,b); 
end.

Больше ничего. Конечно, программа смысла не имеет. Но кое - что я изучаю в стандартном модуле. Нашел такое исключение, поэтому хочется узнать причины, из - за которых оно возникает.


#1944

Можете подробно описать, как вы поймали это исключение? У меня всё нормально.


#1945

Ах, да. Еще вывела программа: [READLNSIGNAL]


#1946

Разработчикам всё равно для исправления нужно знать строку, которая вызвала исключение. А для этого нужно повторить исключение в дебаг-версии. Предоставьте, пожалуйста, полный алгоритм получения данного исключения.


#1947

У меня отлаживается нормально. Но ни у вас одного [READLNSIGNAL], это какая то плавающая ошибка, никак её не поймают.

На всяк, для начала, попробуйте обновится этим:
Win7+ : http://pascalabc.net/downloads/PascalABCNETWithDotNetSetup.exe
WinXP: http://pascalabc.net/downloads/PascalABCNETWithDotNet40Setup.exe

Ну и желательно сказать что вы установили и что у вас за система…
Если всё равно будет воспроизводится - есть ещё несколько вариантов поймать. В том числе - можно дать вам Debug версию.

Ещё, в момент отладки какой строки в каком модуле появляется эта ошибка?


#1948

Для разработчиков.

В файле 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;


#1949

Разобрался, если на отладке на вводить значения переменных, то, соответственно, программа выдает то, что ничего не было введено, и строку [READLNSIGNAL], означающую запрос на ввод переменных. Программа также вывела эту строку, но необрабатываемого исключения больше не появлялось.


#1950

3 строка read(a,b)


#1951

Я говорю про внутренности read.

Что значит на вводить? Много текста ввести или что?


#1952

И что что 2 раза?


#1953

Он про то, где эта ошибка может возникать. А считая что перед text.Substring(0, text.Length - 1) есть условие - можно считать что ошибка может быть только в строке 144.


#1954

Или её там нет. Это - не тестирование, а гадание


#1955

Дедукция* :wink:
Ну да, не словив что то воспроизводимое - это бесполезно…


#1956

Снова поймал ошибку:

Стоит теперь обратить внимание на строку: Ввод данных: 34 4
Окно вывода: 4
34 остается с прошлой отладки, далее на ввод подается 4.
Исключение вышло на 59 строке модуля __RedirectIOMode


#1957

После нажатия кнопки Продолжить в окне вывода: 4[READLNSIGNAL].
Если по новой запустить отладку программы, не меняя уже сохранившуюся строку “Ввод данных”:34 4,
Но после этого, добавив еще число 4, в окне вывода: [READLNS34 4 4