Форум: "Начинающим";
Текущий архив: 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