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

Вниз

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

 
irena ©   (2006-06-15 18:11) [0]

Уважаемые мастера! Не подскажете, как передать параметр функции, если значение этого параметра полностью совпадает с операндом конструкции with?  (можно, конечно, совсем убрать with, но в условии "if" необходимо его присутствие, причем несколько раз)

for i:=0 to ComponentCount-1 do
  begin
    with Components[i] do
      if ClassNameIs("TLabel") {и еще несколько проверок} then
          MyFunction(???);   //Components[i] as TLabel);
  end;


 
Desdechado ©   (2006-06-15 18:17) [1]

внутри with(ab) можно обращаться к AB напрямую, т.е. написать  MyFunction(AB);


 
irena ©   (2006-06-15 18:27) [2]

увы, в моем случае это не проходит...
Delphi пытается вычислить значение [i]-того компонента на Components[i]


 
Loginov Dmitry ©   (2006-06-15 18:30) [3]

irena ©   (15.06.06 18:11)
Не подскажете, как передать параметр функции, если значение этого параметра полностью совпадает с операндом конструкции with?


Никак наверное... Просто не используйте в данном случая with и все...


 
MBo ©   (2006-06-15 18:30) [4]

begin
   c:=Components[i];
   if c is TLabel ...

MyFunction(TLabel(c));


 
irena ©   (2006-06-15 18:36) [5]

Спасибо!
А жаль, что не придумали какого-то заменителя типа Self ....
:-)


 
MBo ©   (2006-06-15 18:44) [6]

>А жаль, что не придумали какого-то заменителя типа Self ....
Хакерский способ есть, но лучше этого не делать


 
irena ©   (2006-06-15 18:46) [7]

а интересно...
какой?


 
Desdechado ©   (2006-06-15 18:48) [8]

у WITH синтаксис несколько шире - там можно сразу несколько переменных писать
к какому тогда через типа-Self обращаться компилятору?


 
irena ©   (2006-06-15 18:53) [9]


> к какому тогда через типа-Self обращаться компилятору?


ну, Delphi же умный...
и даже в переопределенных функциях (override) разбирается
в зависимости от типа...

Sorry...


 
MBo ©   (2006-06-15 18:53) [10]

>какой?
http://www.delphikingdom.ru/asp/viewitem.asp?catalogid=831


 
irena ©   (2006-06-15 19:04) [11]

с п а с и б о !


 
Loginov Dmitry ©   (2006-06-15 19:23) [12]

Desdechado ©   (15.06.06 18:48) [8]
к какому тогда через типа-Self обращаться компилятору?


Хм... А при чем здесь Self? Он же всегда один и тотже в пределах класса, а with его не изменяет.


 
Desdechado ©   (2006-06-15 19:26) [13]

Loginov Dmitry ©   (15.06.06 19:23) [12]
разницу между Self и типа-Self чувствуешь?
контекст обсуждения наблюдаешь?


 
Leonid Troyanovsky ©   (2006-06-15 19:46) [14]


> MBo ©   (15.06.06 18:44) [6]

> Хакерский способ есть, но лучше этого не делать


Можнр и не хакерский.

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

--
Regards, LVT.


 
Джо ©   (2006-06-15 19:52) [15]

> [14] Leonid Troyanovsky ©   (15.06.06 19:46)

Достаточно изящно.


 
Loginov Dmitry ©   (2006-06-15 20:32) [16]

Desdechado ©   (15.06.06 19:26) [13]
контекст обсуждения наблюдаешь?


В общих чертах :)


 
MBo ©   (2006-06-16 08:13) [17]

>Leonid Troyanovsky ©   (15.06.06 19:46) [14]
>Можнр и не хакерский.
Да, конечно, способы разные бывают. В последних версиях Дельфи можно и класс-хелперы использовать для этой цели, чтобы наследника не создавать.


 
Плохиш ©   (2006-06-16 11:14) [18]


> контекст обсуждения наблюдаешь?

Честно говоря, из [0] не понял, какие у девушки проблемы. А после [4] совершенно не понятно, что она соберается решать хакерскими методами, но я бы всё-таки посоветовал сначала обратиться к лечащему врачу.


 
Игорь Шевченко ©   (2006-06-16 11:33) [19]

Leonid Troyanovsky ©   (15.06.06 19:46) [14]


> Можнр и не хакерский.
>
> http://rsdn.ru/Forum/Message.aspx?mid=673350&only=1


А смысл ?


 
evvcom ©   (2006-06-16 13:23) [20]

Не хакерский для каждого компонента не напишешь. А хакерский все-таки не противоречит документированным возможностям, потому не такой уж он и "хакерский".


 
irena ©   (2006-06-16 15:17) [21]

Leonid Troyanovsky  :-) thank you very much


 
Leonid Troyanovsky ©   (2006-06-16 18:19) [22]


> Игорь Шевченко ©   (16.06.06 11:33) [19]

> А смысл ?


Честно говоря, особых глубин смысла не достиг.
В большинстве случаев, потребность в самопознающих объектах
возникает при использовании ссылки внутри конструкции
with TMyObject.Create try .. finally Free; end.
Видимо, из желания сэкономить на описании переменной :)

--
Regards, LVT.


 
Defunct ©   (2006-06-17 08:40) [23]

Leonid Troyanovsky ©   (16.06.06 18:19) [22]

Смысла в этом вообще нет.
Код с этой галиматьей будет работать медленнее чем если просто определить локальную переменную.

> Видимо, из желания сэкономить на описании переменной :)

ну если только ради написания более тормознутого кода.


 
Leonid Troyanovsky ©   (2006-06-17 09:30) [24]


> Defunct ©   (17.06.06 08:40) [23]

> Смысла в этом вообще нет.

Возможно, что и так.

> Код с этой галиматьей будет работать медленнее чем если
> просто определить локальную переменную.

Кто бы сомневался :)

--
Regards, LVT.


 
Gero ©   (2006-06-17 12:48) [25]

> [14] Leonid Troyanovsky ©   (15.06.06 19:46)


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

Класс, спасибо )



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

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

Наверх




Память: 0.52 MB
Время: 0.031 c
1-1148624968
AntonGF
2006-05-26 10:29
2006.07.09
Связь переменной со свойством компанента и наоборот


11-1129216963
Chum
2005-10-13 19:22
2006.07.09
Подмена функций


1-1148593159
Munchner
2006-05-26 01:39
2006.07.09
Скин и Png


15-1149836731
0bsid
2006-06-09 11:05
2006.07.09
PocketPC


15-1149690012
Iehbr
2006-06-07 18:20
2006.07.09
Как Вы относитесь к спаму на "физические" почтовые ящики?