Текущий архив: 2006.05.14;
Скачать: CL | DM;
Вниз
Хочу воспользоваться оператором GOTO, Найти похожие ветки
← →
Думкин © (2006-04-19 07:30) [40]Удалено модератором
← →
Думкин © (2006-04-19 07:34) [41]Удалено модератором
← →
Gydvin © (2006-04-19 07:35) [42]Tirael © (19.04.06 07:30) [39]
Аха, лучше уж
Caption:="12345";
без GOTO точно не обойтись ))))
← →
Marser © (2006-04-19 07:41) [43]Удалено модератором
← →
Думкин © (2006-04-19 07:46) [44]Удалено модератором
← →
Гаврила © (2006-04-19 09:18) [45]Tirael © (19.04.06 7:30) [39]
>if (!OpenDialog1->Execute) return;
>
> неужели в делфи для этого нужен goto???
if not OpenDialog1.Execite then Exit;
← →
Юрий Зотов © (2006-04-19 09:25) [46]> Гаврила © (19.04.06 09:18) [45]
Еще одно подтверждение тому, что все "наезды" сишников на Паскаль проистекают от незнания Паскаля.
← →
Sergey Masloff (2006-04-19 09:28) [47]Гаврила © (19.04.06 09:18) [45]
и все же
if OpenDialog1.Execite then
begin
end;
читается намного лучше ИМХО. Вообще если уж на паскале мы пишем, желательно одну точку выхода иметь.
← →
Sergey Masloff (2006-04-19 09:32) [48]И вообще не только мое имхо NOT по возможности меньше надо применять ибо при беглом просмотре очень плохо воспринимается.
← →
SPeller © (2006-04-19 09:38) [49]Sergey Masloff (19.04.06 9:28) [47]
Только хотел написать то же самое :) Exit-ами тоже нехорошо пользоваться.
← →
Думкин © (2006-04-19 10:07) [50]Чтобы вы того, но у вас не этого.
Есть разные способы.
И их даже древние люди знали, при этом не ведая, что они древние.
Презерватв из овечьей кишки. Или ослинной. Или - ... Потом таблетки, потом баня, потом...
а разницы?
Эффект один - не хочешь последствий, не имей их. И все.
С оператором также - если надо, то применяй. Почему ты об этом спрашиваешь - вот в чем вопрос.
Если я хочу - я применяю, то что могу. Почему я не спрашиваю?
← →
REA (2006-04-19 10:14) [51]Давно не видел goto в программах. Если бы увидел, скорее всего испугался бы. Можно сделать класс TGoToException, чтобы сильно карму не портить.
← →
Игорь Шевченко © (2006-04-19 10:20) [52]Юрий Зотов © (19.04.06 09:25) [46]
Обратное тоже верно.
← →
Гаврила © (2006-04-19 10:45) [53]
> Юрий Зотов ©
> Еще одно подтверждение тому, что все "наезды" сишников
> на Паскаль проистекают от незнания Паскаля.
Иной раз не хватает конструкции
return(1) - присвоить результат и выйти одним махом.
>Sergey Masloff (19.04.06 9:28) [47][Ответить]
>Гаврила © (19.04.06 09:18) [45]
>и все же
>
>if OpenDialog1.Execite then
>begin
>
> end;
Если там еще пяток вложенных иф-ов, то предпочитаю вариант с Exit - меньше путаницы
← →
Sergey Masloff (2006-04-19 10:56) [54]Гаврила © (19.04.06 10:45) [53]
>Если там еще пяток вложенных иф-ов
То прямой кандидат на вынесение в функцию ;-)
Впрочем спор ни о чем - все равно формируются свои привычки у каждого.
← →
Eraser © (2006-04-19 11:04) [55]
> Tirael © (19.04.06 07:30) [39]
>
> 2Eraser
>
> я на сях часто пишу в начале обработчика чтото вроде
>
> if (!OpenDialog1->Execute) return;
>
> неужели в делфи для этого нужен goto???
как тут уже сказали - есть "Exit", но вот такой код
var
ms: TMemoryStream;
..
ms := TMemoryStream.Create;
if not ReadSomeData(ms) then
Exit;
мягко говоря, некорректен, поэтому и приходится использовать try..finally, или же, как вариант, - goto.
я привык делать так:var
ms: TMemoryStream;
..
ms := TMemoryStream.Create;
try
if not ReadSomeData(ms) then
Exit;
...
finally
ms.Free;
end;
← →
jack128 © (2006-04-19 11:14) [56]Sergey Masloff (19.04.06 9:28) [47]
Гаврила © (19.04.06 09:18) [45]
и все же
if OpenDialog1.Execite then
begin
end;
читается намного лучше ИМХО
Смотря сколько у тебя уровней вложенности.
Eraser © (19.04.06 11:04) [55]
мягко говоря, некорректен, поэтому и приходится использовать try..finally, или же, как вариант, - goto.
Нету тут вариантов. Только try - finally
← →
SPeller © (2006-04-19 11:23) [57]Eraser © (19.04.06 11:04) [55]
я привык делать так:
var
ms: TMemoryStream;
..
ms := TMemoryStream.Create;
try
if not ReadSomeData(ms) then
Exit;
...
finally
ms.Free;
end;
Лучше так:var
ms: TMemoryString;
..
try
ms := TMemoryStream.Create;
try
if (ReadSomeData(ms)) then
begin
...
end;
finally
ms.Free;
end;
except
<обработка ошибки создания объекта класса>
end;
...
← →
Гаврила © (2006-04-19 11:29) [58]
> SPeller ©
> except
> <обработка ошибки создания объекта класса>
> end;
А поподробнее можно? Какая именно тут обработка?
← →
Alexander Panov © (2006-04-19 11:31) [59]
> SPeller © (19.04.06 11:23) [57]
>
> <обработка ошибки создания объекта класса>
Это паранойя и и ненужное утяжеление кода.
То е самое, что в программе обрабатывать ошибку нехватки памяти при однократном вызове в программе GetMem(p,1)
← →
Харько © (2006-04-19 11:48) [60]В ядре Linux используются goto, и еще там язвительный комментарий в сторону Дейкстры. Потому Linux и проигрывает Windows по распространенности.
← →
Игорь Шевченко © (2006-04-19 11:55) [61]
> Потому Linux и проигрывает Windows по распространенности.
Так эта...как мало оказывается надо - изменить код в ядре линукса, благо он доступен, и все, Билл Гейтс начинает грызть ногти, наблюдая за тем, как пользователи сносят ненавистный Windows.
← →
Sergey Masloff (2006-04-19 11:59) [62]Игорь Шевченко © (19.04.06 11:55) [61]
Без goto и язвительных комментариев это уже будет не линукс ;-))
← →
Плохиш © (2006-04-19 12:14) [63]
> Sergey Masloff (19.04.06 11:59) [62]
> Без goto и язвительных комментариев это уже будет не линукс
Так вот чем он от вындовса отличается :-))
← →
SPeller © (2006-04-19 12:19) [64]Alexander Panov © (19.04.06 11:31) [59]
Если нужна надёжность кода, то придётся приучить делать так. Надёжный код лёгким не бывает. Когда какая-нить сволочь вдруг скушает память (у меня такое было), очень неприятно, когда большинство программ сыпятся с одной и той же ошибкой. Но это лишь частный пример. Ошибки при создании могут быть и в своих собственных классах. Поэтому если приучен писать так, чтобы в программе было как можно меньше необработанных исключений, то проблем будет меньше.
← →
Чапаев © (2006-04-19 12:54) [65]
> > > редакторы бы не пропустили в печать
> >
> > Редактор -- неудавшийся автор, посему будет всячески стараться
>
> > выпустить в печать какую-либо мерзость, дабы дискредитировать
>
> > автора. :o)
>
> В мемориз! :-))
И копирайт Джека Лондона. :-)
> Страшную пропасть выкопал Дейкстра, заявив, что GOTO сакс
> мастдайный, а все остальное есть рулез вечный и немерянный.
:-) Насколько я знаю, рулез вечный и немерянный -- это while ... do и if ... then ... else, а всё остальное -- примочки для жырных буржуёв, которые нормальному человеку совсем не нужны.
> Давно не видел goto в программах. Если бы увидел, скорее
> всего испугался бы.
Так как нередко бываю в родном институте, часто вижу сию конструкцию в шедеврах первокурсников... :-I
← →
проходил мимо (2006-04-19 13:02) [66]
> SPeller © (19.04.06 12:19) [64]
Тогда в последнем except .. end еще надо добавить код обработки ошибки, имеющей шанс возникнуть при обработке предыдущего исключения, и т.д.
← →
Alexander Panov © (2006-04-19 19:17) [67]
> SPeller © (19.04.06 12:19) [64]
>
> Alexander Panov © (19.04.06 11:31) [59]
> Если нужна надёжность кода, то придётся приучить делать
> так. Надёжный код лёгким не бывает. Когда какая-нить сволочь
> вдруг скушает память (у меня такое было), очень неприятно,
> когда большинство программ сыпятся с одной и той же ошибкой.
> Но это лишь частный пример. Ошибки при создании могут быть
> и в своих собственных классах. Поэтому если приучен писать
> так, чтобы в программе было как можно меньше необработанных
> исключений, то проблем будет меньше.
Когда у тебя кончится память, система не сможет выделить память для создания объекта исключения и приложение успешно упадет без всякой обработки возникшей проблемы.
Страницы: 1 2 вся ветка
Текущий архив: 2006.05.14;
Скачать: CL | DM;
Память: 0.6 MB
Время: 0.037 c