powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Какой командой программно можно прервать выполнение цикла?
18 сообщений из 18, страница 1 из 1
Какой командой программно можно прервать выполнение цикла?
    #33177255
SVR
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
SVR
Гость
...
Рейтинг: 0 / 0
Какой командой программно можно прервать выполнение цикла?
    #33177269
Фотография Владимир СА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
EXIT
...
Рейтинг: 0 / 0
Какой командой программно можно прервать выполнение цикла?
    #33177275
Лисонька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте!
Когда-то мне требовалось то же и я вставила в цикл условие IF LASTKEY()=...
У меня сработало - цикл останавливался.
...
Рейтинг: 0 / 0
Какой командой программно можно прервать выполнение цикла?
    #33177291
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛисонькаЗдравствуйте!
Когда-то мне требовалось то же и я вставила в цикл условие IF LASTKEY()=...
У меня сработало - цикл останавливался.

Но выходила то ты все равно через EXIT
...
Рейтинг: 0 / 0
Какой командой программно можно прервать выполнение цикла?
    #33177549
DMITRY_PEREDISTY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
*Можно и через RETURN

clear type
DO WHILE .t.
wait 'Бла бла!' wind nowait
if inkey() = 27
RETURN -1
endif
ENDO

RETURN 1

* только жать надо много и сильно, т.к. inkey() быстро проскакивает.
...
Рейтинг: 0 / 0
Какой командой программно можно прервать выполнение цикла?
    #33177746
Лисонька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AleksMedНо выходила то ты все равно через EXIT
Кто же спорит? Коченчно, через EXIT. Но ему-то, думаю, важен не сам выход, а как на него выйти.
Код: plaintext
1.
2.
3.
IF LASTKEY()= 27 
EXIT 
ENDIF
Жму Esc - выход из цикла $-))
...
Рейтинг: 0 / 0
Какой командой программно можно прервать выполнение цикла?
    #33177849
Лисонька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сама себя перепроверила. Лучше даже так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SET TALK ON 
_a= 0 
FOR _a=  1  TO  100000 
ON KEY LABEL END DO proc_stop
_a= 1 +_a
? _a
ENDFOR 

PROCEDURE proc_stop
? 'Цикл остановлен'
_a= 1000000 
POP KEY ALL 
RETURN
...
Рейтинг: 0 / 0
Какой командой программно можно прервать выполнение цикла?
    #33177893
О_В_Д
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лисонька, а так будет всетаки короче:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
SET TALK ON 
_a= 0 
FOR _a=  1  TO  100000 
_a= 1 +_a
? _a
ON KEY LABEL END _a= 1000001 
ENDFOR 
POP KEY ALL 
? 'Цикл остановлен'
...
Рейтинг: 0 / 0
Какой командой программно можно прервать выполнение цикла?
    #33178018
Crispy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Hi, Лисонька !

ПРОГРАММНО прерывание цикла возможно - только по EXIT или RETURN
(кстати и не обязательно, чтобы он был с -1)
Это - как раз и есть единственный ответ на задававшийся вначале вопрос. :)

А прерывание по нажатию клавиши - все равно ведь тоже происходит с помощью этих же команд.
Хотя можно еще определить прерывание цикла DO WHILE и в самом условии (т.е. без этих команд):

DO WHILE LASTKEY()#27
...
ENDDO

Правда, не всегда это бывает удобно, тогда вместо этого после какой-то команды, где происходит приостановка и нужно сделать выбор, вставляют:
IF LASTKEY()=27
EXIT
ENDIF

А в твоем последнем примере - для чего вот так, вручную, прерывать цикл FOR...ENDFOR ? Просто так, потому что надоело ждать, когда это все там сосчитается? :)
...
Рейтинг: 0 / 0
Какой командой программно можно прервать выполнение цикла?
    #33178047
Crispy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Цикл DO WHILE <условие> , конечно же еще будет прерываться ПРОГРАММНО и по указанному условию (без EXIT и RETURN).
...
Рейтинг: 0 / 0
Какой командой программно можно прервать выполнение цикла?
    #33178198
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CrispyЦикл DO WHILE <условие> , конечно же еще будет прерываться ПРОГРАММНО и по указанному условию (без EXIT и RETURN).
Если только <условие> != .T. ;-)))
...
Рейтинг: 0 / 0
Какой командой программно можно прервать выполнение цикла?
    #33178241
Лисонька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CrispyА в твоем последнем примере - для чего вот так, вручную, прерывать цикл FOR...ENDFOR ? Просто так, потому что надоело ждать, когда это все там сосчитается? :)
Здравствуйте!
Ну, во-первых, вопрос здесь поднят не мной, а member'ом с ником SVR. Согласитесь, что ничего конкретного в его вопросе не описано. Просто вопрос о выход из цыкла или аварийном прерывании его.
Во-вторых, иногда, бывает, так запишешься, что твой цикл зацикливается на самом себе, а клавиша ESC не помогает. Может, это и происходит у SBR.
В-третьих, может, кому и надоедает ждать ;-))
И последнее: ну ведь работает прерываение цикла, правда?
...
Рейтинг: 0 / 0
Какой командой программно можно прервать выполнение цикла?
    #33178256
Crispy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Само собой. Другое толкование этой фразы - было бы и вовсе бессмысленно :)
Просто, скажем, условие:
DO WHILE EMTY(a)=.T.
Абсолютно аналогичео
DO WHILE EMTY(a)
Но первое как-то не принято среди большинства программистов. Может у теоретиков разве что... :) То же самое, кстати, когда вместо RETURN.T. пишут просто RETURN.
...
Рейтинг: 0 / 0
Какой командой программно можно прервать выполнение цикла?
    #33178299
Crispy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
2Лисонька
(то, что я написал чуть выше - это на замечание Urri, извиняюсь, забыл уточнить)

Лисонька иногда, бывает, так запишешься, что твой цикл зацикливается на самом себе, а клавиша ESC не помогает.
Если такое бывает... :) - выполняй сначала сомнительный код через Debugger - точно никогда не зациклишься. :)
Или уж ставь такую возможность прерывания на период отладки - в самом начале программы - пока достаточно не напрактикуешься.
...
Рейтинг: 0 / 0
Какой командой программно можно прервать выполнение цикла?
    #33178644
Urri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CrispyСамо собой. Другое толкование этой фразы - было бы и вовсе бессмысленно :)
Просто, скажем, условие:
DO WHILE EMTY(a)=.T.
Абсолютно аналогичео
DO WHILE EMTY(a)
Но первое как-то не принято среди большинства программистов. Может у теоретиков разве что... :) То же самое, кстати, когда вместо RETURN.T. пишут просто RETURN.Да нет, я имел в виду цикл типа DO WHILE .T. ;-)))
...
Рейтинг: 0 / 0
Какой командой программно можно прервать выполнение цикла?
    #33178907
Лисонька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
CrispyЕсли такое бывает... :) - выполняй сначала сомнительный код через Debugger - точно никогда не зациклишься. :)
Кстати о Debugger. Практически им не пользовалась, в первую очередь потому, что не очень-то уяснила его пользу для себя (леди и джентельмены, не смейтесь, конечно, я не считаю себя пупом земли). Я понимаю, что это отличная вещь для тестирования своих кодов в prg-файлах. А выдрать код из какого-нибудь объекта формы и опробовать его через Debugger - зачастую нужно в этот код сваливать и все PUBLIC переменные, что прописаны и в нем и в др. объектах.
Может, кто-нибудь попробует переубедить меня? Только хорошими аргументами и критическим разгромом моих взглядов на Debugger.
...
Рейтинг: 0 / 0
Какой командой программно можно прервать выполнение цикла?
    #33178909
Лисонька
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Между прочим, в этом топике уже 15 ответов, а многоуважаемый SVR, из-за которого и разгорелся весь сыр-бор, что-то помалкивает.
Наверно, все-таки зациклился.
...
Рейтинг: 0 / 0
Какой командой программно можно прервать выполнение цикла?
    #33179409
AleksMed
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ЛисонькаА выдрать код из какого-нибудь объекта формы и опробовать его через Debugger - зачастую нужно в этот код сваливать и все PUBLIC переменные, что прописаны и в нем и в др. объектах.

Ну выдирать то зачем. Расставив точки останова или поместив в нужном месте кода команду SET STEP ON ты в Дебагере можешь пройти пошагово проблемный участок.
...
Рейтинг: 0 / 0
18 сообщений из 18, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Какой командой программно можно прервать выполнение цикла?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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