powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Программирование [игнор отключен] [закрыт для гостей] / непонятный баг турбо паскаля
21 сообщений из 21, страница 1 из 1
непонятный баг турбо паскаля
    #35436559
sergey_tarasov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет!
Хотел попрсить помощи.
Написал прогу, - не работает путем, собака. Прога простая. Однако, баг ну очень непонятный.
Будет время - гдяньте пож.
Текст проги.
uses
crt;
var
i:integer;
str:string;
key:byte;
ch:char;
begin
repeat
begin
clrscr;
readln(str);
writeln('do you want to exit');
key:=0;
repeat
if keypressed then key:=ord(readkey);
until (key=121) or (key=110);
if key=121 then halt;
end;
until (str='exit');
end.

Читает строку с экрана. Затем просит символ и если символ равен 'y', то выходит, а если 'n', то входит в цикл снова. Все длится до тех пор, пока строковая констаната, введенная с экрана, не примет значение 'exit'.
Так вот баг в следующем.
Если ввожу строку длиной меньше 3-х символов в текущем цикле и потом 'y', то в следующей итерации цикла при следующем вводе строки первые 2 символа ну никак не хотят высвечиваться на экране и только после ввода третьего символа высвечивается вся строка. Если же ввести строку из 3 символов в текущей итерации, то в след. итерации все ок.
При этом если убрать очищение экрана в начале цикла, - все начинает работаь нормально.
В чем батва, не пойму...
Кто знает - помогите.
...
Рейтинг: 0 / 0
непонятный баг турбо паскаля
    #35436760
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хм, сессия в июле? Совсем замучили студентов...
...
Рейтинг: 0 / 0
непонятный баг турбо паскаля
    #35436841
sergey_tarasov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И вот нет ведь, чтоб по существу ответить...
По-моему если не знаешь - лучше просто промолчать.
Кстати институт я 5 лет назад закончил с красным дипломом.
Сейчас измерениями джиттера в сетях SDH занимаюсь, если интересно...
Программа нужна для работы.
...
Рейтинг: 0 / 0
непонятный баг турбо паскаля
    #35436846
sergey_tarasov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
эта программа - маленький кусочек более большого целого.
...
Рейтинг: 0 / 0
непонятный баг турбо паскаля
    #35436895
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergey_tarasovИ вот нет ведь, чтоб по существу ответить...
По-моему если не знаешь - лучше просто промолчать.
Кстати институт я 5 лет назад закончил с красным дипломом.
Сейчас измерениями джиттера в сетях SDH занимаюсь, если интересно...
Программа нужна для работы.
И даже не нашли на форуме кнопку src, чтоб код был читабелен. В таком виде его смотреть невозможно.
...
Рейтинг: 0 / 0
непонятный баг турбо паскаля
    #35436903
Фотография Aklin J
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сложно понять, что требуется.
по тому, что я только что прочитал, halt прерывает выполнение всей программы. следовательно, второй итерации цикла быть не может, или про halt не то написали.

варианты: поиграться с различным положением write, ln, read, clrscr и т.д.

форматированный код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
uses
	crt;
var
	i:integer;
	str:string;
	key:byte;
	ch:char;
begin
	repeat	
		begin
			clrscr;
			readln(str);
			writeln('do you want to exit');
			key:= 0 ;
			repeat
				if keypressed then 
					key:=ord(readkey);
			until (key= 121 ) or (key= 110 );
			if key= 121  then 
				halt;
		end;
	until (str='exit');
end.
...
Рейтинг: 0 / 0
непонятный баг турбо паскаля
    #35436918
sergey_tarasov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
XDiaBLoИ даже не нашли на форуме кнопку src, чтоб код был читабелен. В таком виде его смотреть невозможно.
uses
crt;
var
i:integer;
str:string;
key:byte;
begin
repeat
begin
clrscr;
readln(str);
writeln('do you want to exit');
key:=0;
repeat
if keypressed then key:=ord(readkey);
until (key=121) or (key=110);
if key=121 then halt;
end;
until (str='exit');
end.[src][/src]
первый раз знаете ли на таком форуме...
вроде так.
...
Рейтинг: 0 / 0
непонятный баг турбо паскаля
    #35436922
sergey_tarasov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
uses
 crt;
var
 i:integer;
 str:string;
 key:byte;
begin
 repeat
  begin
   clrscr;
   readln(str);
   writeln('do you want to exit');
   key:= 0 ;
   repeat
    if keypressed then key:=ord(readkey);
   until (key= 121 ) or (key= 110 );
   if key= 121  then halt;
  end;
 until (str='exit');
end.

или так...
...
Рейтинг: 0 / 0
непонятный баг турбо паскаля
    #35436927
sergey_tarasov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aklin Jсложно понять, что требуется.
по тому, что я только что прочитал, halt прерывает выполнение всей программы. следовательно, второй итерации цикла быть не может, или про halt не то написали.

варианты: поиграться с различным положением write, ln, read, clrscr и т.д.

форматированный код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
uses
	crt;
var
	i:integer;
	str:string;
	key:byte;
	ch:char;
begin
	repeat	
		begin
			clrscr;
			readln(str);
			writeln('do you want to exit');
			key:= 0 ;
			repeat
				if keypressed then 
					key:=ord(readkey);
			until (key= 121 ) or (key= 110 );
			if key= 121  then 
				halt;
		end;
	until (str='exit');
end.


однако, все танцы с бубном перепробованы...
...
Рейтинг: 0 / 0
непонятный баг турбо паскаля
    #35436941
sergey_tarasov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aklin Jсложно понять, что требуется.
по тому, что я только что прочитал, halt прерывает выполнение всей программы. следовательно, второй итерации цикла быть не может, или про halt не то написали.

варианты: поиграться с различным положением write, ln, read, clrscr и т.д.

форматированный код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
uses
	crt;
var
	i:integer;
	str:string;
	key:byte;
	ch:char;
begin
	repeat	
		begin
			clrscr;
			readln(str);
			writeln('do you want to exit');
			key:= 0 ;
			repeat
				if keypressed then 
					key:=ord(readkey);
			until (key= 121 ) or (key= 110 );
			if key= 121  then 
				halt;
		end;
	until (str='exit');
end.


halt прерывет, если после строки в ответ на 'do you want to exit' ввест 'y'.
он все правильно делает.
поясню.
это нужно для того, чтобы если чел неправильно ввел переменную вернуть его обратно для ввода или по его желанию осуществить выход из программы.
...
Рейтинг: 0 / 0
непонятный баг турбо паскаля
    #35436945
474
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergey_tarasovТак вот баг в следующем.
Если ввожу строку длиной меньше 3-х символов в текущем цикле и потом 'y', то в следующей итерации цикла
А откуда она взялась, следующая итерация, при ответе 'y'?
...
Рейтинг: 0 / 0
непонятный баг турбо паскаля
    #35437023
Фотография Aklin J
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
474 sergey_tarasovТак вот баг в следующем.
Если ввожу строку длиной меньше 3-х символов в текущем цикле и потом 'y', то в следующей итерации цикла
А откуда она взялась, следующая итерация, при ответе 'y'?
+1
...
Рейтинг: 0 / 0
непонятный баг турбо паскаля
    #35437045
sergey_tarasov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Aklin J 474 sergey_tarasovТак вот баг в следующем.
Если ввожу строку длиной меньше 3-х символов в текущем цикле и потом 'y', то в следующей итерации цикла
А откуда она взялась, следующая итерация, при ответе 'y'?
+1

пардон 'y' с 'n' перепутал :) в абзаце:

Если ввожу строку длиной меньше 3-х символов в текущем цикле и потом 'y', то в следующей итерации цикла при следующем вводе строки первые 2 символа ну никак не хотят высвечиваться на экране и только после ввода третьего символа высвечивается вся строка. Если же ввести строку из 3 символов в текущей итерации, то в след. итерации все ок.

в остальном все так как написал.
...
Рейтинг: 0 / 0
непонятный баг турбо паскаля
    #35437090
sergey_tarasov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sergey_tarasovВсем привет!
Хотел попрсить помощи.
Написал прогу, - не работает путем, собака. Прога простая. Однако, баг ну очень непонятный.
Будет время - гдяньте пож.
Текст проги.
uses
crt;
var
i:integer;
str:string;
key:byte;
ch:char;
begin
repeat
begin
clrscr;
readln(str);
writeln('do you want to exit');
key:=0;
repeat
if keypressed then key:=ord(readkey);
until (key=121) or (key=110);
if key=121 then halt;
end;
until (str='exit');
end.

Читает строку с экрана. Затем просит символ и если символ равен 'y', то выходит, а если 'n', то входит в цикл снова. Все длится до тех пор, пока строковая констаната, введенная с экрана, не примет значение 'exit'.
Так вот баг в следующем.
Если ввожу строку длиной меньше 3-х символов в текущем цикле и потом 'n', то в следующей итерации цикла при следующем вводе строки первые 2 символа ну никак не хотят высвечиваться на экране и только после ввода третьего символа высвечивается вся строка. Если же ввести строку из 3 символов в текущей итерации, то в след. итерации все ок.
При этом если убрать очищение экрана в начале цикла, - все начинает работаь нормально.
В чем батва, не пойму...
Кто знает - помогите.

Кстати, то же самое наблюдается при вводе любой другой переменной - символьной, целой, вещественной и т.д.
...
Рейтинг: 0 / 0
непонятный баг турбо паскаля
    #35437242
474
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если не принципиально использование именно процедуры clrscr, используйте вместо нее textmode(c80).
...
Рейтинг: 0 / 0
непонятный баг турбо паскаля
    #35437300
sergey_tarasov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
474Если не принципиально использование именно процедуры clrscr, используйте вместо нее textmode(c80).

ОДНАКО!..
вот он специалист! Спасибо - все заработало!
если не сложно, - педелитесь секретом? в чем была "фишка"?
...
Рейтинг: 0 / 0
непонятный баг турбо паскаля
    #35438312
474
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergey_tarasovесли не сложно, - педелитесь секретом? в чем была "фишка"?
Это не фича, это баг. У crt багов много, по-моему в каком-то из SWAG'ов я даже перечень видел.
...
Рейтинг: 0 / 0
непонятный баг турбо паскаля
    #35438812
sergey_tarasov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
474 sergey_tarasovесли не сложно, - педелитесь секретом? в чем была "фишка"?
Это не фича, это баг. У crt багов много, по-моему в каком-то из SWAG'ов я даже перечень видел.

ну я ж так и подозревал, что это баг (см. название темы).
мои предположения оправдались.
спасибо!
кстати, это никак не лечится?
...
Рейтинг: 0 / 0
непонятный баг турбо паскаля
    #35440964
sergey_tarasovИ вот нет ведь, чтоб по существу ответить...
По-моему если не знаешь - лучше просто промолчать.
Кстати институт я 5 лет назад закончил с красным дипломом.
Сейчас измерениями джиттера в сетях SDH занимаюсь, если интересно...
Программа нужна для работы.

А C - слышали такой язык?

ПС. Хотя бы для приличия FreePascal for DOS 2.0.4 поставили бы
...
Рейтинг: 0 / 0
непонятный баг турбо паскаля
    #35441630
sergey_tarasov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ынтырпрайс sergey_tarasovИ вот нет ведь, чтоб по существу ответить...
По-моему если не знаешь - лучше просто промолчать.
Кстати институт я 5 лет назад закончил с красным дипломом.
Сейчас измерениями джиттера в сетях SDH занимаюсь, если интересно...
Программа нужна для работы.

А C - слышали такой язык?

ПС. Хотя бы для приличия FreePascal for DOS 2.0.4 поставили бы

С знаете ли для продвинутых программеров, а я так... только в паскале и умею. С мне нет надобности знать, - я свзист, а не программист.
И вообще Паскаль - это уже неприлично что ли? :)

Модератор:
в высшей степени прилично
...
Рейтинг: 0 / 0
непонятный баг турбо паскаля
    #35441714
Фотография XDiaBLo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sergey_tarasov Ынтырпрайс sergey_tarasovИ вот нет ведь, чтоб по существу ответить...
По-моему если не знаешь - лучше просто промолчать.
Кстати институт я 5 лет назад закончил с красным дипломом.
Сейчас измерениями джиттера в сетях SDH занимаюсь, если интересно...
Программа нужна для работы.

А C - слышали такой язык?

ПС. Хотя бы для приличия FreePascal for DOS 2.0.4 поставили бы

С знаете ли для продвинутых программеров, а я так... только в паскале и умею. С мне нет надобности знать, - я свзист, а не программист.
И вообще Паскаль - это уже неприлично что ли? :)
Это уже тема для нового холивара...
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Программирование [игнор отключен] [закрыт для гостей] / непонятный баг турбо паскаля
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]