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

Вниз

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

Наверх




Память: 0.5 MB
Время: 0.009 c
2-1150971343
Blari
2006-06-22 14:15
2006.07.09
Детский вопрос


1-1148908777
AFfonya
2006-05-29 17:19
2006.07.09
CMD.EXE выполение произвольной команды


15-1149807962
Неизвестный!!!
2006-06-09 03:06
2006.07.09
Оцените мой сайт!


3-1147349577
Nirvana
2006-05-11 16:12
2006.07.09
Как скопировать одну ADO таблицу в другую?


8-1134755959
hgd
2005-12-16 20:59
2006.07.09
Вывод большого изображения (Gb)





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