Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 2011.06.12;
Скачать: [xml.tar.bz2];

Вниз

вложенные 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.003 c
15-1298628283
Очень злой
2011-02-25 13:04
2011.06.12
вложенные With


15-1298356869
Гость
2011-02-22 09:41
2011.06.12
Изменить шаблон, где можно ?


2-1299063928
rodionov_uv
2011-03-02 14:05
2011.06.12
проблемы с окном


15-1297418426
reqyz
2011-02-11 13:00
2011.06.12
Перевести 3 строчки C++ -> Delphi


6-1237876024
Alex_C
2009-03-24 09:27
2011.06.12
ClientSocket + TThread = ошибка при завершении программы





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский