![]() |
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]() ![]() ![]() |
|
Wowa |
|
|||
Эксперт ![]() Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
Думал, что смогу отделаться через last, так не получилось
![]() |
|||
|
||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: нет Всего: 12 |
break ![]() -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
Максим |
|
|||
Unregistered |
Выход из цикла, помойму команда "EXIT";
|
|||
|
||||
Baa |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: нет Всего: 12 |
Exit совершает ничто иное как безусловный переход в конец процедуры (jmp end;) т.е. выход из неё.
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
||||
|
|||||
Song |
|
|||
![]() Sysman.ru ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1095 Регистрация: 2.6.2002 Репутация: 2 Всего: 4 |
Если вызов Exit производится внутри цикла, то компилятор автоматически сначала подставляет Break.
Если вызов Exit идёт и блока try .. finally .. end то компилятор автоматически подставляет Abort Так что не всё так безусловно. -------------------- Прежде чем сказать "Невозможно", подумай, прав ли ты |
|||
|
||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: нет Всего: 12 |
Буду знать...а переход и в том и в другом случае делается безусловный -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: нет Всего: 12 |
procedure TForm1.Button1Click(Sender: TObject); begin while true do begin ShowMessage ('Test'); Exit; end; ShowMessage ('This will never happen'); end; А какая разница? Попробуй вместо Exit поставить break... Exit - это выход из процедуры без каких либо подставлений... Как проверить? смотрим код: jmp +$0a А куда это мы прыгаем? правильно, прямо на ret в обход последней функции...Так что все таки это безусловный выход из процедуры. -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
Song |
|
|||
![]() Sysman.ru ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1095 Регистрация: 2.6.2002 Репутация: 2 Всего: 4 |
Нет, здесь вызов выхода из текущей обработки и выход обрабатывается одноврменно, через стёк т.е. через трассировку или подставкой чего-нить в код Вы не проверите, поэтому придется мне поверить на слово
![]() -------------------- Прежде чем сказать "Невозможно", подумай, прав ли ты |
|||
|
||||
Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: нет Всего: 12 |
Вобщем, так или иначе, если мы хотим, чтобы все, что идет после цикла выполнилось Exit никак не подходит
![]() -------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
Ampersand |
|
|||
Новичок Профиль Группа: Участник Сообщений: 46 Регистрация: 20.5.2002 Репутация: нет Всего: нет |
Вообще Паскаль задумывался как строгий, структурный язык. Соответственно, всякие вольности типа выхода из процедуры в любой точке и произвольное прекращение цикла в нем не допускаются... В Дельфях можт уже все испортили, не знаю... А вообще в данном случае классика - замена for на while. Еще можно попробовать принудительно переменную цикла увеличить до верхней границы. На крайняк goto...
|
|||
|
||||
Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
1) Exit и Break появились в Turbo Pascal (не то в 6.0, не то в 7.0) 2) На чистом Паскале можно программировать наверное лишь чистую математику, да простейшие cgi. В связи с полным отсутствием интерфейса, экспорта функций, объектов и т.п. использование чистого классического Паскаля практически невозможно. 3) В настоящее время существует лишь одна распространённая реализация Паскаль сделанная Борландом (только не надо говорить что есть еще много - есть то они есть, да пользователей их пренебрежительно мало), следовательно стандарт Паскаля De Facto определяют версии от Borland (точно так же как Basic определяется MS) -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
rhf |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 13.8.2002 Репутация: нет Всего: нет |
2 Ampersand, вообщето break (выход из цикла) и exit (выход из процедуры/функции) идут из старого доброго паскаля и я рад, что никто ничего НЕ испортил и НЕ выкинул их из Object Pascal. И давайте не будем вспоминать про goto
![]() |
|||
|
||||
Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Нет, не идут! В спецификации Паскаля их нет. Они появились, как я уже говорил, в Tp6 (это примерно 1993 год), до этого их ни в одной реализации вообще не было. А так называемый Object Pascal появился примерно тогда-же в том же TP6 c появлением Turbo Vision, ни в стандарте Паскаля, ни в одной реализации Паскаля до того никаких объектов вообще не было. Добавление объектов и разработка спецификации Object Pascal целиком заслуга Борланд, другие реализации Object Pascal появились только лет через 5 после Object Pascal от Борланд и практически базировались на последнем. -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
Song |
|
|||
![]() Sysman.ru ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1095 Регистрация: 2.6.2002 Репутация: 2 Всего: 4 |
Моя версия Tp7
Ну уж никак не <=Tp5 :-) -------------------- Прежде чем сказать "Невозможно", подумай, прав ли ты |
|||
|
||||
Vit |
|
|||
![]() Vitaly Nevzorov ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 10964 Регистрация: 25.3.2002 Где: Chicago Репутация: 48 Всего: 207 |
Это точно, в TP5.5 абсолютно точно не было ни объектов, ни exit, ни break (только Halt был для любителей ![]() -------------------- With the best wishes, Vit I have done so much with so little for so long that I am now qualified to do anything with nothing Самый большой Delphi FAQ на русском языке здесь: www.drkb.ru |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Общие вопросы" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |