Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> operator with, оператор with 
:(
    Опции темы
IvIvI
Дата 13.7.2013, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 3
Регистрация: 7.8.2009

Репутация: нет
Всего: нет



есть код

Код

  With TForm.create(self) do begin
     makeSmthWithForm(FORM);
  end;


как внутри оператора With обратиться к форме, точнее как передать в метод makeSmthWithForm созданную форму в операторе With
PM MAIL   Вверх
northener
Дата 13.7.2013, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Цитата(IvIvI @  13.7.2013,  17:55 Найти цитируемый пост)
как внутри оператора With обратиться к форме

Считай что никак.


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Poseidon
Дата 13.7.2013, 23:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 9
Всего: 133



Тут только заводить переменную - ссылку на создаваемую форму и потом уже эту переменную передавать. Внутри именно такой конструкции не получится


--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
MetalFan
Дата 16.7.2013, 12:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Аццкий Сотона
****


Профиль
Группа: Комодератор
Сообщений: 3815
Регистрация: 2.10.2006
Где: Moscow

Репутация: 22
Всего: 128



Если используется одна из свежих версий делфи, то можно извернуться с пом.хелпера, типа:
Код

   TObjectHelper = class helper for TObject
     function GetSelf: TObject;
   end;
...
  function TObjectHelper.GetSelf: TObject;
  begin
     Result := Self;
  end;


Ну и в конструкции with появится возможность вызывать GetSelf чтобы получить ссылку на объект в with...
А еще от with'а рекомендуется отказаться, если планируется написание кроссплатформенного кода или кода для мобильных платформ...
Цитата

Note: The With statement might not be supported in the future by the mobile compilers or new compilers. We recommend that you refactor or rewrite any With statements in your code base, and eliminate With statements where possible.



--------------------
There are always someone smarter than you...
PM MAIL   Вверх
Poseidon
Дата 16.7.2013, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 9
Всего: 133



Цитата(MetalFan @  16.7.2013,  12:11 Найти цитируемый пост)
Note: The With statement might not be supported in the future by the mobile compilers or new compilers. We recommend that you refactor or rewrite any With statements in your code base, and eliminate With statements where possible.
Обалдеть. По началу рекомендовали использовать, типо читаемость улучшается, а теперь refactor рекомендуют.



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
northener
Дата 16.7.2013, 17:16 (ссылка) |   (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Цитата(Poseidon @  16.7.2013,  16:09 Найти цитируемый пост)
По началу рекомендовали использовать, типо читаемость улучшается

Но читаемость никогда и не улучшалась, зато отладка очень осложнялась при использовании with.


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
Poseidon
Дата 17.7.2013, 12:15 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Delphi developer
****


Профиль
Группа: Комодератор
Сообщений: 5273
Регистрация: 4.2.2005
Где: Гомель, Беларусь

Репутация: 9
Всего: 133



Цитата(northener @  16.7.2013,  17:16 Найти цитируемый пост)
Но читаемость никогда и не улучшалась

Ну не скажи
Код

MyFirstClass.MySecondClass.MyThirdClass.MyFirstMethod;
MyFirstClass.MySecondClass.MyThirdClass.MySecondMethod;
MyFirstClass.MySecondClass.MyThirdClass.MyThirdMethod;

или
Код

with MyFirstClass.MySecondClass.MyThirdClass do
begin
  MyFirstMethod;
  MySecondMethod;
  MyThirdMethod;
end;



--------------------
Если хочешь, что бы что-то работало - используй написанное, 
если хочешь что-то понять - пиши сам...
PM MAIL ICQ   Вверх
Illusion Dolphin
Дата 17.7.2013, 12:39 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1198
Регистрация: 3.5.2003

Репутация: 5
Всего: 63



Цитата

MyFirstClass.MySecondClass.MyThirdClass.MyFirstMethod;
MyFirstClass.MySecondClass.MyThirdClass.MySecondMethod;
MyFirstClass.MySecondClass.MyThirdClass.MyThirdMethod;

В таком случае заводится переменная. Тем более, что такие вложенные конструкции страдают очень часто от NullPointerException и если произошла в такой строчке ошибка, то непонятно, что не так, даже если имеется строка с ошибкой из отладочной информации.


--------------------
В мире всего две бесконечности: вселенная и человеческая глупость... На счёт вселенной я не уверен.
Шифрование и организация фотографий - Photo Database 4.5
PM MAIL WWW ICQ   Вверх
northener
Дата 17.7.2013, 17:43 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1361
Регистрация: 2.9.2010

Репутация: 12
Всего: 20



Цитата(Poseidon @  17.7.2013,  12:15 Найти цитируемый пост)
Ну не скажи

А ты не путаешь наглядность и количество писанины?

А уж вот в таком варианте:
Код

  with obj1, ..., objn do statement

вообще не только наглядностью не пахнет, так и самые настоящие грабли на каждой строчке "statement" запрятаны smile


--------------------
Но только лошади летают вдохновенно.
Иначе лошади разбились бы мгновенно!
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0741 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.