Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2011.06.12;
Скачать: CL | DM;

Вниз

вложенные With   Найти похожие ветки 

 
Очень злой   (2011-02-25 13:04) [0]

with a do
 try
    ...
    with b do
       try
          ...
          SomeMethod;
          ...
       finally
         free;
       end;
    ...
 finally
   free;
 end


Метод SomeMethod имеется в обоих объектах (т.е. и в a и b)
Но в данном случае метод SomeMethod будет относиться к объекту a или b?


 
Очень злой   (2011-02-25 13:05) [1]

Извиняюсь, не в ту конференцию запостил. Хотел в "начинающим"... :(


 
KilkennyCat ©   (2011-02-25 13:10) [2]

b


 
clickmaker ©   (2011-02-25 13:10) [3]

> метод SomeMethod будет относиться к объекту a или b?

b
лучше вообще таких конструкций избегать. Если есть неоднозначность


 
KilkennyCat ©   (2011-02-25 13:12) [4]

я бы вынес в отдельную функцию - читать будет легче, без неоднозначности.


 
Anatoly Podgoretsky ©   (2011-02-25 13:38) [5]

> Очень злой  (25.02.2011 13:04:00)  [0]

Гадаешь?
А хочешь не гадать? - Выкини with и будет тебе хорошо.


 
Dennis I. Komarov ©   (2011-02-25 13:42) [6]


> Очень злой   (25.02.11 13:04)  

А так?
with a, b, c do
try
   ...
         SomeMethod;

:)


 
clickmaker ©   (2011-02-25 13:50) [7]

> А так?
> with a, b, c do
> try
>   ...
>         SomeMethod

все три одновременно


 
KilkennyCat ©   (2011-02-25 13:50) [8]


> Dennis I. Komarov ©   (25.02.11 13:42) [6]

c


 
Dennis I. Komarov ©   (2011-02-25 13:55) [9]

Эмм, я как говорится, Вас...?


 
Dennis I. Komarov ©   (2011-02-25 13:56) [10]

И условия что у "с" есть SomeMethod не было...


 
И. Павел ©   (2011-02-25 20:40) [11]

Вот это извращения :) Я таких не видел даже в коде, который мне отдавали на переписывание. Кстати, если в результате доработки программы [0] в "a" появится свойство "b" с методом SomeMetod то будет вызываться именно он, и найти такой конфликт имен будет очень трудно.


 
asail ©   (2011-02-25 21:40) [12]

Вложенные with надо запретить. В УК прировнять к терроризму.


 
KilkennyCat ©   (2011-02-25 21:54) [13]

я бы ваще программистов на учет ставил.


 
Яблокитай   (2011-02-25 22:44) [14]

Опять про Goto забыли ...


 
Плохиш ©   (2011-02-26 02:02) [15]


> Но в данном случае метод SomeMethod будет относиться к объекту
> a или b?

А что, в справке это уже не пишут?


 
KilkennyCat ©   (2011-02-26 02:03) [16]

а что, справку уже читают? :)


 
_Юрий   (2011-02-26 11:27) [17]

Особенно With доставляет тем, что в нем напрочь не работает инспектирование при дебаге.
А польза сомнительна - экономия нескольких секунд при наборе кода разве что, зато потом можно потерять больше времени.  
Целесообразно разве что в самых простых случаях, когда отладка не потребуется, например присвоение полей из одной структуры в другую. А за два и больше - расстреливать на месте


 
RWolf ©   (2011-02-26 11:39) [18]


> _Юрий   (26.02.11 11:27) [17]

удобно же:

with TSomething.Create(…) do
 try
   …
 finally
   Free
 end;


 
asail ©   (2011-02-26 13:37) [19]


> RWolf ©   (26.02.11 11:39) [18]

Дык и так удобно:
var
 so: TSomething;
begin
 ...
 so := TSomething.Create(...);
 try
   ...
 finally
   so.Free
 end;


Один в один, только еще одну переменную ввести... Но, руки, надеюсь, от этого не отвалятся? :)
Зато, никакой неопределенности.


 
clickmaker ©   (2011-02-26 13:59) [20]

> удобно же:
>
> with TSomething.Create(…) do
> try

единственный раз, когда мне это было действительно удобно:

class function TSomeDialog.Execute: boolean;
begin
 with TSomeDialog.Create(Application) do begin
   try
     ...
     Result := (ShowModal = mrOk);
     ...
   finally
     Free;
   end;
 end;
end;


удобно тем, что диалог вызывается одной строчкой из любого места



Страницы: 1 вся ветка

Текущий архив: 2011.06.12;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.008 c
2-1299242761
advise
2011-03-04 15:46
2011.06.12
По готовой программе можно узнать какие компоненты в ней


2-1299248506
я_только_учусь
2011-03-04 17:21
2011.06.12
Возможно ли выполнить SQL запрос для двух различных DataSource?


2-1298879860
petvv
2011-02-28 10:57
2011.06.12
Установить Primary Key = 0


2-1299150042
fantoma
2011-03-03 14:00
2011.06.12
Печать в fastreport


1-1256627612
Lionel
2009-10-27 10:13
2011.06.12
Вывод числа прописью в компонент Memo в FastReport