![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| BraM's |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 63 Регистрация: 2.7.2004 Репутация: нет Всего: 1 |
А почему у меня exit не выбрасывает из функций и процедур?
|
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Приведи код
-------------------- С уважением, г-н Посол. |
|||
|
||||
| Bratsman |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 5.5.2004 Репутация: нет Всего: нет |
BraM's - это я на работе. Bratsman - дома.
p0s0l, код такой. type TMyClass = class protected F: File; ..... end; function TMyClass.OpenRead(FileName): boolean; begin AssignFile(F , FileName); {$I-} Reset(F , 1); {$I+} if IOResult <> 0 then begin result := false; exit; end; {дальше код продолжается} end; Так вот. Если файл не существует, то она проходит по конструкции exit, после чего идёт в тот код, который называется {дальше код продолжается}. И ещё несколько подобных ситуаций... Непример, не сделать проверку на ноль... Может есть в Delfi такая же инструкция, как return в С++? Это сообщение отредактировал(а) Bratsman - 3.7.2004, 09:12 |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Видимо глюки, раз такое происходит. Этот странный глюк - уже при компиляции должен генериться такой глючный код...
Exit - это и есть аналог return, после неё прога должна по смыслу переходить на последнюю строчку end; Ну что можно посоветовать - используй else:
-------------------- С уважением, г-н Посол. |
|||
|
||||
| Maverick |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1307 Регистрация: 22.9.2003 Где: Odessa, Ukraine Репутация: 2 Всего: 10 |
Bratsman
Так как написано у тебя - это в любом случае так называемый плохой тон в программировании... вроде использования goto и тому подобное... Как говориться работает, но.... всегда можно обйтись без этих оперторов... Лучше послушайся p0s0l... |
|||
|
||||
| RA |
|
|||
![]() Брутальный буратина ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 3497 Регистрация: 31.3.2002 Где: Лес Репутация: 14 Всего: 115 |
Попробуй обойти эту лажу через Label
|
|||
|
||||
| z-END |
|
|||
![]() прафесар™ ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3014 Регистрация: 13.3.2003 Где: Венья, Пиетари Репутация: 11 Всего: 102 |
Maverick
ну если говорить про дурной тон, тогда вообще не чере IOResult работать надо, а через try...except типа так:
Это сообщение отредактировал(а) nJIaKca.spb - 4.7.2004, 19:53 -------------------- Каждый чилавек пасвоему праф...а памоему НЕТ! |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
nJIaKca.spb, тогда уж CloseFile надо засунуть перед except, иначе может быть ситуация, когда закрывается не открытый файл...
-------------------- С уважением, г-н Посол. |
|||
|
||||
| Albinos_x |
|
|||
![]() Evil Skynet ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3288 Регистрация: 28.5.2004 Где: X-6120400 Y-1 4624650 Репутация: 26 Всего: 108 |
тогда уж лучше использовать try ... finnaly ... и CloseFile после finnaly вставлять. -------------------- "Кто владеет информацией, тот владеет миром" Уинстон Черчилль |
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Albinos_x, так будет появляться exception... А ему это вряд ли надо...
-------------------- С уважением, г-н Посол. |
|||
|
||||
| <Spawn> |
|
|||
![]() Око кары:) ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2776 Регистрация: 29.1.2003 Где: Екатеринбург Репутация: 44 Всего: 64 |
Тогда уже, соединив все вместе, получится это
Это сообщение отредактировал(а) <Spawn> - 5.7.2004, 16:07 -------------------- "Для некоторых людей программирование является такой же внутренней потребностью, подобно тому, как коровы дают молоко, или писатели стремятся писать" - Николай Безруков. |
|||
|
||||
| Guest |
|
|||
|
Unregistered |
2 PosOl
Ты это серьезно???? |
|||
|
||||
| Medved |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 7209 Регистрация: 15.9.2002 Где: Kazakhstan, Astan a Репутация: 14 Всего: 154 |
И я о том же! Как это так, аналог?! -------------------- |
||||
|
|||||
| p0s0l |
|
||||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
Люди, мож я че не понимаю, но единственное отличие exit от return в том, что в exit нельзя указать результат функции, это надо делать через Result := ...; А в return он указывается непосредственно... Или, Pegas, ты меня разыгрываешь ?... -------------------- С уважением, г-н Посол. |
||||
|
|||||
| Maverick |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1307 Регистрация: 22.9.2003 Где: Odessa, Ukraine Репутация: 2 Всего: 10 |
Этого мало? В принципе, тот же танк, только на колесах и без дула... |
|||
|
||||
![]()
|
| Правила форума "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. |