Модераторы: volvo877, Snowy, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Срочно! Как аварийно завершить зацикленную прогу? 
V
    Опции темы
Kbl4AH
Дата 9.12.2008, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: нет
Всего: 15



Здравствуйте.
Вопрос в теме...
PM MAIL ICQ   Вверх
Сашок
Дата 9.12.2008, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 26
Регистрация: 27.6.2008

Репутация: нет
Всего: нет



Немного не понял вопроса, но вот:
Из цикла можно выйти используя процедуру Break, если известно сколько итераций максимально возможно в цикле, то делаешь счетчик и при привышении этого числа делаешь break. Еще есть процедура Halt которая просто завершает работу программы.
PM MAIL   Вверх
Kbl4AH
Дата 10.12.2008, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: нет
Всего: 15



нет, прога в режиме выполнения находится...
мне нужно выйти из нее принудительно...
например у меня в цикл вставлен read(a)... итераций много...
мне например неохота вводить все 50 раз переменную... я ввел одну-две и мне нужно закончить выполнение программы...
в нете написано Ctrl+Break...
но у меня это не работает...
PM MAIL ICQ   Вверх
Dobermann
Дата 10.12.2008, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 992
Регистрация: 7.1.2008

Репутация: нет
Всего: 0



Цитата(Kbl4AH @  10.12.2008,  00:04 Найти цитируемый пост)
в нете написано Ctrl+Break...но у меня это не работает...

Раз 5 нажми - должно сработать...
PM   Вверх
Kbl4AH
Дата 10.12.2008, 00:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: нет
Всего: 15



Цитата(Dobermann @ 10.12.2008,  01:37)
Раз 5 нажми - должно сработать...

Да хоть 555 - не пашет...

PM MAIL ICQ   Вверх
volvo877
Дата 10.12.2008, 11:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(Dobermann @  9.12.2008,  23:37 Найти цитируемый пост)
Раз 5 нажми - должно сработать... 
Не должно, и не будет... Поскольку Ctrl+C (или Ctrl+Break) прерывает программу во время вывода результатов (при выполнении Write/WriteLn), а не во время ожидания ввода...

Сработать это может только в том случае, если Ctrl+Break нажать в момент, когда печатается приглашение ввести очередное значение. Не поскольку автору надо ВМЕСТО ввода значения (приглашение уже напечатано, так ведь?) прервать программу - то надо делать по другому, Ctrl+Break здесь не помощник.
PM MAIL   Вверх
Kbl4AH
Дата 10.12.2008, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: нет
Всего: 15



Да-да)))
И как это сделать, неужели нет средства? smile 
PM MAIL ICQ   Вверх
volvo877
Дата 10.12.2008, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(Kbl4AH @  10.12.2008,  11:00 Найти цитируемый пост)
И как это сделать, неужели нет средства?

Средство есть всегда... Я пользовался вот такой конструкцией, например:

Код

uses crt;

function ProcessEsc: boolean;

  procedure urKey(K: word);
  const
    kbStart = $1E;
    kbEnd   = $3C;
  var
    kbHead:  word absolute $40:$1A;
    kbTail:  word absolute $40:$1C;
    wasTail: word;
  begin
    wasTail := kbTail;
    if kbTail = kbEnd then kbTail := kbStart
    else inc(kbTail, 2);

    if kbTail = kbHead then kbTail := wasTail
    else memw[$40:wasTail] := K;
  end;

var ch: char;
begin { function ProcessEsc }
  ProcessEsc := False;
  while not keypressed do;

  ch := readkey;
  if ch = #27 then ProcessEsc := True
  else urKey(ord(ch));
end; { function ProcessEsc }

var
  i, X: integer;
begin
  for i := 1 to 10 do begin
    write('i = ', i:2, ' Введите число -> ');
    if ProcessEsc then break;
    readln(X);
    writeln('Было введено X = ', X);
  end;
end.

PM MAIL   Вверх
Kbl4AH
Дата 10.12.2008, 13:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: нет
Всего: 15



Конечно, хитро smile 
Но не для моего случая...
Я просто спрашивал на тот случай, когда прога нормально не завершается, а я давно не сохранялся и завершать паскаль не хочется.
Спасибо, очень познавательно!
PM MAIL ICQ   Вверх
volvo877
Дата 10.12.2008, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2073
Регистрация: 15.11.2004

Репутация: 2
Всего: 116



Цитата(Kbl4AH @  10.12.2008,  12:24 Найти цитируемый пост)
на тот случай, когда прога нормально не завершается, а я давно не сохранялся и завершать паскаль не хочется.
надо настроить автоматическое сохранение файлов в момент запуска программы (Options -> Environment -> Proferences -> Auto save, поставить все крестики), а если очень хочется - можно попробовать ввести заведомо неправильное значение (строку вместо числа, например). В большинстве случаев "защита от дурака" не пишется, и это заставит программу вылететь с RunTime Error... Ну а уж если защита присутствует - тут ничего не сделаешь, она для того и создана чтобы программа продолжала работать несмотря ни на что...
PM MAIL   Вверх
Kbl4AH
Дата 10.12.2008, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 741
Регистрация: 1.4.2008
Где: Вятка

Репутация: нет
Всего: 15



Цитата(volvo877 @ 10.12.2008,  15:22)
надо настроить автоматическое сохранение файлов в момент запуска программы (Options -> Environment -> Proferences -> Auto save, поставить все крестики)

Алилуйя smile 
То, что доктор прописал, спасибо!
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi"
THandle
Rrader
volvo877

Запрещается!

1. Обсуждать и делится взломанными компонентами или программным обеспечением

2. Публиковать ссылки на варез

3. Оффтопить

  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, THandle, Rrader, volvo877.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Object Pascal: кроссплатформенные технологии | Следующая тема »


 




[ Время генерации скрипта: 0.0471 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.