| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Общие вопросы > EXIT |
| Автор: BraM's 2.7.2004, 17:06 |
| А почему у меня exit не выбрасывает из функций и процедур? |
| Автор: p0s0l 2.7.2004, 18:34 |
| Приведи код |
| Автор: Bratsman 3.7.2004, 09:10 |
| 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 в С++? |
| Автор: p0s0l 3.7.2004, 10:41 | ||
| Видимо глюки, раз такое происходит. Этот странный глюк - уже при компиляции должен генериться такой глючный код... Exit - это и есть аналог return, после неё прога должна по смыслу переходить на последнюю строчку end; Ну что можно посоветовать - используй else:
|
| Автор: Maverick 3.7.2004, 11:04 |
| Bratsman Так как написано у тебя - это в любом случае так называемый плохой тон в программировании... вроде использования goto и тому подобное... Как говориться работает, но.... всегда можно обйтись без этих оперторов... Лучше послушайся p0s0l... |
| Автор: RA 3.7.2004, 20:01 |
| Попробуй обойти эту лажу через Label |
| Автор: z-END 4.7.2004, 19:50 | ||
| Maverick ну если говорить про дурной тон, тогда вообще не чере IOResult работать надо, а через try...except типа так:
|
| Автор: p0s0l 4.7.2004, 20:09 |
| nJIaKca.spb, тогда уж CloseFile надо засунуть перед except, иначе может быть ситуация, когда закрывается не открытый файл... |
| Автор: Albinos_x 5.7.2004, 01:30 |
| тогда уж лучше использовать try ... finnaly ... и CloseFile после finnaly вставлять. |
| Автор: p0s0l 5.7.2004, 09:10 |
| Albinos_x, так будет появляться exception... А ему это вряд ли надо... |
| Автор: <Spawn> 5.7.2004, 16:05 | ||
Тогда уже, соединив все вместе, получится это
|
| Автор: Guest 6.7.2004, 04:10 | ||
2 PosOl
Ты это серьезно???? |
| Автор: Medved 6.7.2004, 06:28 | ||||
И я о том же! Как это так, аналог?! |
| Автор: p0s0l 9.7.2004, 14:40 | ||||
Люди, мож я че не понимаю, но единственное отличие exit от return в том, что в exit нельзя указать результат функции, это надо делать через Result := ...; А в return он указывается непосредственно... Или, Pegas, ты меня разыгрываешь ?... |
| Автор: Maverick 9.7.2004, 17:50 | ||
Этого мало? В принципе, тот же танк, только на колесах и без дула... |
| Автор: p0s0l 9.7.2004, 21:28 |
| А может тот же танк с дулом, только без колёс ?... Похоже, тема ушла куда-то не туда, так что закрываю... |