Имя: Пароль:
1C
 
Как прервать цикл без остановки выполнения кода по нажатию комбинации клави
0 Господин ПЖ
 
27.06.07
12:23
ОбработкаПрерыванияПользователя() - прерывает выполнение кода обработки. Никто не находил способ прервать цикл и просто выйти из функции/процедуры?
1 asady
 
27.06.07
14:55
(0) засунь
ОбработкаПрерыванияПользователя() в Попытку/Исключение.
2 Господин ПЖ
 
27.06.07
15:00
(1) Пробывал - не взлетело.
3 asady
 
27.06.07
15:06
(2) у меня взлетело. Покажи свой код.
4 Господин ПЖ
 
27.06.07
15:07
(3)

Процедура КнопкаВыполнитьНажатие(Кнопка)
   
   лч = 0;
   
   Пока 1 = 1 Цикл
       
       попытка
           ОбработкаПрерыванияПользователя();
       Исключение
           
       КонецПопытки;
       
       лч = лч + 1;
       Сообщить("" + лч);
   
   КонецЦикла;
   
   Сообщить("!");
   
КонецПроцедуры


Тыкаю в клаву и в конце "!" - не сообщает.
5 TormozIT
 
гуру
27.06.07
15:19
Да, в платформе не предусмотрен такой механизм.
А нужно всего лишь функцию ПрерватьОбработку() типа Булево, которая проверяет нажатие CTRL+Break
6 Господин ПЖ
 
27.06.07
15:22
(5) ОбработкаПрерыванияПользователя() и так действует на всю обработку. речь идет о прерывании длинного цикла по требованию пользователя без остановки всего выполнения.
7 DrWatson
 
27.06.07
15:22
Никогда не пробовал ОбработкаПрерыванияПользователя засовывать в попытку. Проверьте, он в исключение заходит?
8 Господин ПЖ
 
27.06.07
15:25
(7) Неа. не заходит.
9 DrWatson
 
27.06.07
15:30
(8) Плохо, значит не работает. Но можно попробовать так:
Попытка
 Цикл
   ОбработкаПрерыванияПользователя
 КонецЦикла
Исключение
КонецПопытки
Сообщить("!");
10 simol
 
27.06.07
15:36
А если цикл вынести в отдельную обработку и там ОбработкаПрерыванияПользователя?
Или тогда все обработки закроются?
11 asady
 
27.06.07
15:38
(1)+ у меня в цикле стояло предупреждение("",1) для того, чтобы не было 100% загрузки проца - так вот из цикла никак не выходил - хотя я CTRL+BREAK жал очень ритмично.

- но хочу сказать заявление в (1) было поспешным - так пока не работает.

я бы еще попытался через загрузить обработчик ожидания и анализ буфера клавиатуры нештатными способами.
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший