Текущий архив: 2006.05.14;
Скачать: CL | DM;
Вниз
Хочу воспользоваться оператором GOTO, Найти похожие ветки
← →
WondeRu © (2006-04-18 14:51) [0]но религия не позволяет! Что делать?
← →
Cashmare © (2006-04-18 14:55) [1]plug & pRay :)))
← →
Игорь Шевченко © (2006-04-18 14:55) [2]Один раз Аллах простит
← →
Джо © (2006-04-18 14:56) [3]> Что делать?
Сменить концессию.
← →
Гаврила © (2006-04-18 14:59) [4]Можно написать
но только обязательно маленькими буквами
и обязательнно в обрамлении:
{$REGION "Я больше не буду"}
goto xxx;
{$ENDREGION}
и держать закрытым
← →
Eraser © (2006-04-18 15:00) [5]А вот в весьма уважаемый автор Рихтер, в весьма уважаемой книге "Programming Server-Side Applications for MS Windows 2000" пользуется таки оператором goto, и ничё - живой вроде :)
← →
Игорь Шевченко © (2006-04-18 15:05) [6]Eraser © (18.04.06 15:00) [5]
Очевидно он другой веры. Или не на Delphi пишет. Кроме того, книга двух авторов, так что неизвестно, кто именно из них пользуется :)
← →
Чапаев © (2006-04-18 15:10) [7]Один набирает "g" и "t", а второй -- две "о". Таким образом, никакого греха нету.
← →
Eraser © (2006-04-18 15:15) [8]
> Игорь Шевченко © (18.04.06 15:05) [6]
не на делфи эт точно ))
однако это сути деля не меняет, если бы "goto" было бы таким уж грехом, то редакторы бы не пропустили в печать :)
← →
Johnmen © (2006-04-18 15:17) [9]
> Джо © (18.04.06 14:56) [3]
>
> > Что делать?
>
> Сменить концессию.
Конфессию?
А это не грех?
← →
Чапаев © (2006-04-18 15:19) [10]
> редакторы бы не пропустили в печать
Редактор -- неудавшийся автор, посему будет всячески стараться выпустить в печать какую-либо мерзость, дабы дискредитировать автора. :o)
← →
Игорь Шевченко © (2006-04-18 15:24) [11]Eraser © (18.04.06 15:15) [8]
> если бы "goto" было бы таким уж грехом, то редакторы бы
> не пропустили в печать
Это заговор. Там еще в книжке масонские знаки, если на просвет посмотреть.
← →
Джо © (2006-04-18 15:26) [12]> [9] Johnmen © (18.04.06 15:17)
> Конфессию?
> А это не грех?
Да, спасибо за исправление машинальной опечатки. Нет, не грех, если сменить на такую, в какой понятие "греха" отсутствует :)
← →
Гарри Поттер © (2006-04-18 15:29) [13]Раньше пользовался goto часто, все нормально работает, но мастера с этого сайта сказали что это неправильно. Теперь не пользуюсь. Но так и не понял почему goto некошерен (если не брать в расчет читабельность кода)
Тоже хотел такую ветку создать, но забыл, т.к. goto уже не юзаю :-)
← →
Чапаев © (2006-04-18 15:32) [14]
> так и не понял почему goto некошерен (если не брать в расчет
> читабельность кода)
Ну... При корректном использовании он кошерен.
← →
Eraser © (2006-04-18 15:42) [15]
> Игорь Шевченко © (18.04.06 15:24) [11]
смотрел-смотрел сквозь .chm файл на просвет.. ничё так и не увидел :(
> Гарри Поттер © (18.04.06 15:29) [13]
думаю не стОит применять goto для сложных конструкций, хотя вполне удобно для таких.
if not bSomething then
goto Return;
хотя я деляю так
try
if not bSomething then
Exit;
finally
end;
:)
← →
Gero © (2006-04-18 16:09) [16]Не советую. Я как-то раз использовал, до сих пор кошмары по ночам мучают.
← →
Desdechado © (2006-04-18 16:09) [17]> Хочу
это тоже грех, когда мысли плохие
← →
MsGuns © (2006-04-18 16:33) [18]А что это такое ?
← →
oldman © (2006-04-18 16:39) [19]
> Хочу воспользоваться оператором GOTO,
>
> WondeRu © (18.04.06 14:51)
> но религия не позволяет! Что делать?
будем добрыми :)))
a:=0;
while a=0 do
begin
{делаем что надо}
if GoToНеНужен then a:=1; (поскольку следующий end и будет goto)
end;
← →
Плохиш © (2006-04-18 17:15) [20]
> Хочу воспользоваться оператором GOTO,
>
> WondeRu © (18.04.06 14:51)
> но религия не позволяет! Что делать?
Всё начинается с малого, а потом будут однополая любовь, спид, смерть...
← →
Marser © (2006-04-18 17:22) [21]> религия не позволяет!
А мы тут причём? Прокоснультируйся со своим раби, может он и разрешит :-))
> [10] Чапаев © (18.04.06 15:19)
>
> > редакторы бы не пропустили в печать
>
> Редактор -- неудавшийся автор, посему будет всячески стараться
> выпустить в печать какую-либо мерзость, дабы дискредитировать
> автора. :o)
В мемориз! :-))
← →
SKIPtr (2006-04-18 17:42) [22]Я пользуюсь только не кому не говорю, и не кто этого не замечает
← →
oldman © (2006-04-18 17:44) [23]Апошли все дружно вспоминать Фортран...
← →
Mystic © (2006-04-18 17:50) [24]Вспомнить статью Д. Кнута "Структурное программирование с использование goto" :)
← →
AlexWlad © (2006-04-18 19:24) [25]
> oldman © (18.04.06 17:44) [23]
Или ЯМБ (Язык Машин Бухгалтерских), был такой для Искра-555. Из серии - "максимум способов превратить программу в спагетти".
← →
Gydvin © (2006-04-18 20:48) [26]Много goto конечно перебор, но иногда возникают такие ситуации когда легче всего разрулить с ним
← →
LexxX © (2006-04-18 21:43) [27]Предлагаю повеситься/застрелиться, ибо грех смывается только кровью!
з.ы. лучше застрелиться - крови больше! ]:->
← →
Strate © (2006-04-18 23:04) [28]Как без GOTO выйти из второго и последующих уровней многоуровнего цикла:
for
for
for
... ;
← →
Kerk © (2006-04-18 23:06) [29]Strate © (18.04.06 23:04) [28]
if Flag then Break;
← →
Юрий Зотов © (2006-04-18 23:18) [30]Break, Continue, Case, For, Repeat, While... и GoTo.
Какая страшная пропасть лежит между всеми этими операторами... как неимоверно принципиально и неимоверно резко различаются они... почти так же сильно, как jle отличается от jng... с ума сойти...
← →
Marser © (2006-04-18 23:29) [31]> [30] Юрий Зотов © (18.04.06 23:18)
> Break, Continue, Case, For, Repeat, While... и GoTo.
>
> Какая страшная пропасть лежит между всеми этими операторами...
> как неимоверно принципиально и неимоверно резко различаются
> они... почти так же сильно, как jle отличается от jng...
> с ума сойти...
Пять баллов! :-))
← →
Игорь Шевченко © (2006-04-18 23:50) [32]Юрий Зотов © (18.04.06 23:18) [30]
Страшную пропасть выкопал Дейкстра, заявив, что GOTO сакс мастдайный, а все остальное есть рулез вечный и немерянный.
← →
Германн © (2006-04-19 03:30) [33]
> Юрий Зотов © (18.04.06 23:18) [30]
</I
> различаются они... почти так же сильно, как jle отличается
> от jng... с ума сойти...
>
Наверно всё же jne, а не jle!
А с ума сходить не стоит. Имхо.
← →
boalse © (2006-04-19 04:22) [34]
> Как без GOTO выйти из второго и последующих уровней многоуровнего
> цикла:
>
> for
> for
> for
> ... ;
> if Flag then Break;
В данных случаях я юзаю именно Goto, потому как
if Flag then Break;
работает медленнее. Я прав?
← →
boalse © (2006-04-19 04:27) [35]> Как без GOTO выйти из второго и последующих уровней многоуровнего
> цикла:
Добавлю: Причём выйти не на более нижний уровень, а вообще выйти из многоуровневого цикла.
← →
Джо © (2006-04-19 04:30) [36]> работает медленнее. Я прав?
It"s not that important.
← →
Думкин © (2006-04-19 07:19) [37]> boalse © (19.04.06 04:27) [35]
Если ты его организовал - значит он тебе был нужен.
Не люблю очевидные вопросы с очевидными ответами. :(
← →
Marser © (2006-04-19 07:26) [38]Удалено модератором
← →
Tirael © (2006-04-19 07:30) [39]2Eraser
я на сях часто пишу в начале обработчика чтото вродеif (!OpenDialog1->Execute) return;
неужели в делфи для этого нужен 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.64 MB
Время: 0.042 c