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

Вниз

что внутри 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.006 c
1-1197184274
Lamer666
2007-12-09 10:11
2008.08.31
Как сделать необычную ФОРМУ с TImage-ем?


15-1215818767
Kostafey
2008-07-12 03:26
2008.08.31
С днем рождения ! 12 июля


15-1215681548
DRG
2008-07-10 13:19
2008.08.31
Книга по С++ для знающего Delphi


15-1215768527
Правильный*Вася
2008-07-11 13:28
2008.08.31
только что касперский выдал


3-1204541204
Igor_34
2008-03-03 13:46
2008.08.31
Правильно - 0 или Null ?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский