Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.5 MB
Время: 0.042 c
6-1141366408
DelphiN!
2006-03-03 09:13
2006.07.09
Перехват трафика


2-1150873143
greg123
2006-06-21 10:59
2006.07.09
Внесение изменений в текствый файл


6-1139402416
-=S..S=-
2006-02-08 15:40
2006.07.09
TWebBrowser VS input type="file"


2-1150447898
ANB
2006-06-16 12:51
2006.07.09
Как при отправке письма через TIdSMTP указать кодировку письма ?


2-1150976741
Tochka
2006-06-22 15:45
2006.07.09
Выключение комьпютера




   Наверх