Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Задачи _ Прерывание цикла

Автор: -=АнЮтА=- 13.06.2007 1:40

Подскажите еще такую вещь, пожалуйста). Как мне прервать процедуру или цикл не выходя из программы. Halt не подходит. А exit - не помогает. nea.gif

Автор: volvo 13.06.2007 1:46

Break (для цикла), или Exit (для процедуры) обязано работать... Показывай, как пробовала...

Автор: -=АнЮтА=- 13.06.2007 1:51

procedure passw;
begin
writeln('Для продолжения нажмите Enter или для выхода нажмите Esc');
q:=readkey;
if q=#27 then exit ;
.....

end;

Примерно вот так) blink.gif

Автор: volvo 13.06.2007 1:56

И что? Не работает? Как ты это определила?

(просто по приведенному фрагменту я ничего не могу сказать, я не знаю, ни ОТКУДА вызывается процедура Passw, ни что ДАЛЬШЕ в ней происходит, при нажатии Enter-а)...

Автор: -=АнЮтА=- 13.06.2007 2:16

 procedure passw;
begin
writeln('Для продолжения нажмите Enter или для выхода нажмите Esc');
q:=readkey;
if q=#27 then exit ;
writeln('Введите пароль');
end;



Процедура вызывается в программе. Хочу, чтоб если нажат Esc - процедура завершала работу. А если не нажат - то просит ввести пароль.

Добавлено через 2 мин.
Если нажимаю Esc - она все равно просит пароль(((

Автор: volvo 13.06.2007 2:39

У меня не просит (если работает ТОЛЬКО этот код)... Я ж тебе говорю, совсем нет уверенности, что, например, в буфере клавиатуры что-нибудь не осталось с предыдущих вводов данных (если так - то в переменную q будет читаться то, что осталось в буфере, и, естественно, это будет не код Esc, и будет запрос пароля...).

В крайнем случае - добавляй перед выводом сообщения очистку буфера:

while keypressed do readkey;

Автор: -=АнЮтА=- 13.06.2007 2:45

Спасибо) Сейчас попробую)