Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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
2-1145838896
Bratskiy
2006-04-24 04:34
2006.05.14
Резервное копирование базы данных


2-1146129825
Wolferio
2006-04-27 13:23
2006.05.14
Печать файлов


2-1146142887
VeB
2006-04-27 17:01
2006.05.14
Набор иконок для одной программы


2-1145867869
Keks
2006-04-24 12:37
2006.05.14
Всплывающие сообщения


3-1142926431
Jane
2006-03-21 10:33
2006.05.14
Использование в коннектах через BDE user name заданных кириллицей