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

Вниз

что внутри with   Найти похожие ветки 

 
Dennis I. Komarov ©   (2008-07-25 11:13) [0]

Всетаки можно ли как-нить:

with TAny.Create do try
 // Вот тут добраться до того что в with, т.е. в данном ванианте указатель на экземпляр созданного TAny
finally
 Free;
end;


ЗЫ переменную не предлагать :)


 
Palladin ©   (2008-07-25 11:15) [1]

можно конечно, если у TAny есть функция-метод возвращающая ссылку на свой"же экземпляр


 
Leonid Troyanovsky ©   (2008-07-25 11:19) [2]


> Dennis I. Komarov ©   (25.07.08 11:13)  

http://www.rsdn.ru/Forum/Message.aspx?mid=673350&only=1

--
Regards, LVT.


 
Dennis I. Komarov ©   (2008-07-25 11:21) [3]

"средствами языка": Вместо TAny все что угодно, TStringList к примеру

ЗЫ TStringList не переписываем.


 
Правильный$Вася   (2008-07-25 11:30) [4]


>  переменную не предлагать :)

догматы веры?
к свойствам можнои так обратиться, а если тебе нужен сам объект, то почему бы ему и переменную не выделить? она же все равно есть, только неименованная тобой, так что экономии никакой


 
Johnmen ©   (2008-07-25 11:36) [5]


> Всетаки можно ли как-нить:

Не...


 
Vlad Oshin ©   (2008-07-25 11:40) [6]

а для чего это может быть нужно?


> Всетаки можно ли как-нить:
>
> with TAny.Create do try
>  // Вот тут добраться до того что в with, т.е. в данном
> ванианте указатель на экземпляр созданного TAny
> finally
>  Free;
> end;
>
> ЗЫ переменную не предлагать :)


 
Dennis I. Komarov ©   (2008-07-25 11:57) [7]

> [4] Правильный$Вася   (25.07.08 11:30)
догматы веры?

Нет. Этот вариант известен

> [6] Vlad Oshin ©   (25.07.08 11:40)
а для чего это может быть нужно?

к примеру
 TAny(withpoint)[0]


 
Игорь Шевченко ©   (2008-07-25 12:10) [8]


> Всетаки можно ли как-нить:


нет


 
Vlad Oshin ©   (2008-07-25 12:12) [9]


> к примеру
>  TAny(withpoint)[0]

а для чего это может быть нужно?


 
Игорь Шевченко ©   (2008-07-25 12:12) [10]

автор, пойми одну простую вещь - чем проще будет исходный текст программы, тем быстрее к тебе потянутся люди.
За извраты а-ля добраться до того, к чему применяется with я бы немедленно уволил - дальше делай выводы сам.


 
Dennis I. Komarov ©   (2008-07-25 12:21) [11]

> [10] Игорь Шевченко ©   (25.07.08 12:12)

Поэтому я не использовал то что в [1] и [2], а искал "средства языка".
Нет так нет. Все... Закрыли...


 
han_malign ©   (2008-07-25 13:00) [12]

type
   TStringListSelf = class(TStringList)
      function __self: TStringList;
   end;
function TStringListSelf.__self: TStringList;
begin
    Result:= self;
end;
..................
with TStringListSelf(TStringList.Create) do try
    ...__self...;
finally
    Free;
end;

- заметьте - создаваемый TStringList - не переписываем...


 
Игорь Шевченко ©   (2008-07-25 13:01) [13]


> han_malign ©   (25.07.08 13:00) [12]


вот-вот, за такой код и надо увольнять


 
han_malign ©   (2008-07-25 13:03) [14]

а метод TStringListSelf.__self - состоит из одной инcтрукции - ret...


 
Palladin ©   (2008-07-25 13:06) [15]


> Игорь Шевченко ©   (25.07.08 13:01) [13]

и волчий билет им вручать :)


 
han_malign ©   (2008-07-25 13:51) [16]


> вот-вот, за такой код и надо увольнять

- меня спросили вопрос, я ответил ответ...
В свете документированных особенностей вызова методов экземпляра класса - этот способ более корректен чем function with_self: TObject; asm mov eax, ebx end... :)))

З.Ы. with TAny.Create do - вообще, замечательный способ усложнить себе жизнь невозможностью посмотреть текуще состояние объекта во время трассировки...


 
{RASkov} ©   (2008-07-25 14:26) [17]

> Всетаки можно ли как-нить:
>
> with TAny.Create do try
> // Вот тут добраться до того что в with, т.е. в данном
> ванианте указатель на экземпляр созданного TAny
> finally
> Free;
> end;
>
> ЗЫ переменную не предлагать :)


По опредилению with - нельзя. Ибо
with TStringList.Create(owner), Canvas, Edit1.Font do....
указатель на экземпляр кого должен быть в with?


 
Anatoly Podgoretsky ©   (2008-07-25 14:28) [18]


> > [4] Правильный$Вася   (25.07.08 11:30)
> догматы веры?
>
> Нет. Этот вариант известен

А все таки это вера, хоть ты и сопротивляешься, как алкоголик.
Чем именованая переменная хуже анонимной?


 
Palladin ©   (2008-07-25 14:30) [19]


> {RASkov} ©   (25.07.08 14:26) [17]

:) это варварский метод, конструкция with с запятыми для супер лентяев является просто сокращеннием метода записи
with TStringList.Create(owner) do
 with Canvas do
  with Edit1.Font do

так что приоритет обращения будет всегда у последнего указанного в конструкции объекта/записи


 
{RASkov} ©   (2008-07-25 14:43) [20]

> [19] Palladin ©   (25.07.08 14:30)
> так что приоритет обращения будет всегда у последнего

Хм... точно :) Но все равно "мнимого self"а" в конструкции with - нет. Но есть хацкие методы, ибо в наше время нет проблем :)


 
Dennis I. Komarov ©   (2008-07-25 15:15) [21]

> [20] {RASkov} ©   (25.07.08 14:43)

Нафига они? Можно просто переменную объявить и все. Я спрашивал про "язык". Нету такого и все. Хватит мусолить...


 
{RASkov} ©   (2008-07-25 16:52) [22]

> [21] Dennis I. Komarov ©   (25.07.08 15:15)
> Я спрашивал про "язык".

Что есть язык? Неужели хацкие методы это уже не язык? шаманство? магия?
Могу тебя успокоить, я не настаиваю на всякого рода извращиниях. Просто говорю как есть :)
Согласен с [5], [8], [17], возможно [13] :)

> Нафига они?

Сам не понимаю, но они есть)

> Хватит мусолить...

хватит



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

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

Наверх




Память: 0.52 MB
Время: 0.027 c
4-1194955541
Tahion2
2007-11-13 15:05
2008.08.31
Смена иконки папки в Висте


2-1215966626
fog
2008-07-13 20:30
2008.08.31
SQL -> ADODataset.Filter


2-1216877838
uno-84
2008-07-24 09:37
2008.08.31
Извлечь дату из таблицы Базы Данных с условиями


2-1216375799
Vlad
2008-07-18 14:09
2008.08.31
Попытка разобраться с сервисами


15-1215669236
Slider007
2008-07-10 09:53
2008.08.31
С днем рождения ! 10 июля 2008 четверг