Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

заNILить форму после Close;


Страницы:   1 2 3 4 5 6 7 8 9 10

ничтожная козявка ©   (2008-08-21 12:37:00) 

В некой dll есть функция, показывающая форму. Перед созданием формы, она проверяет ее на NIL:

 if not Assigned(Form1) then Form1 := TForm1.Create(AOwner);


также требуется, что бы после закрытия (Close) форма была уничтожена:

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
 ...
 Action := caFree;
 ...
end;


ВОПРОС: как сделать так, чтоб она была не только уничтожена, но и переменная Form1 приняла значение NIL. Т.к. поскольку эта переменная не NIL, при повторной попытке создать форму, ее конструктор
  if not Assigned(Form1) then Form1 := TForm1.Create(AOwner);
не вызывается, и в последствии сыпятся AV.


Плохиш   (2008-08-23 22:47:00) [41]


> Неужели Stack произносится как стек?

А, понял, поколение компютикус, "как слышится, так и пишется"... Всё ухожу, здесь мне делать нечего...


@!!ex   (2008-08-23 22:45:00) [42]

> [147] Плохиш ©   (23.08.08 22:39)

Неужели Stack произносится как стек?? И где же в слове Stack звук "е"??


Плохиш   (2008-08-23 22:39:00) [43]


> @!!ex ©   (23.08.08 22:33) [146]

А можно, пожалуйста, слово "стек" писать правильно? А то глаза режет.


@!!ex   (2008-08-23 22:33:00) [44]

> А ты тоже не представляешь как работает стек?

Насколько мне известно: стэк - это заранее выделенный кусок памяти по которой перемещается указатель.
Память в стэке - это фигня. Потому что чтобы сейчас переполнить стэк - нужно очень постаратся.
А вот время на перемещени указатиеля не нулевое, и на этом омжно сэкономить, если идет частое обращение к переменной.


Anatoly Podgoretsky   (2008-08-23 22:28:00) [45]


> @!!ex ©   (23.08.08 22:08) [144]

> но и собственно место в стэке.

А ты тоже не представляешь как работает стек? Как можно в нем место съекономить, по сравнению с глобальными переменными?


@!!ex   (2008-08-23 22:08:00) [46]

> [143] Anatoly Podgoretsky ©   (23.08.08 21:53)

А в чем вопрос? Типа смещение указателя стэка операция не тратящая времени?


Anatoly Podgoretsky   (2008-08-23 21:53:00) [47]

> Renegat  (23.08.2008 20:08:22)  [142]

А теперь еще узнай и что такое стек. Тут уже не туплю пахнет.


Renegat   (2008-08-23 20:08:00) [48]

упс. Туплю, звиняйте... о_0
ЗЫ: забыл где нахожусь %)


Германн   (2008-08-23 20:06:00) [49]


> стэка

- Вот послал бог дурака уполномоченного по копытам! - Сердился Остап. - Ничего поручить нельзя. Купил машинку с турецким акцентом.
(с:)


Renegat   (2008-08-23 19:58:00) [50]

Глобальные переменные не есть абсолютное зло. Да и с чего бы? Наоборот, они, отъедая совсем немного от секции данных, экономят не только операцию выделения под них стэка при вызове функции (и его освобождения при выходе, кстати), но и собственно место в стэке. Конечно, не стоит этим злоупотреблять, и юзать их только когда кончаются регистры.


Тын-Дын   (2008-08-23 17:27:00) [51]


> Игорь Шевченко ©   (23.08.08 15:03) [136]
> Тын-Дын ©   (23.08.08 12:46) [132]
>
>
> > Не забудь, что руки перед едой нужно мыть.
>
>
> Че, отпуск кончился, можно троллить с новыми силами ?


Мне конечно не хочется пустой флейм разводить, но может быть посмотреть на оппонента повнимательнее и не писать ерунды?


Leonid Troyanovsky   (2008-08-23 16:43:00) [52]


> DVM ©   (23.08.08 16:22) [137]

> лишь одной переменной? А если переменных таких 10? Будем
> делать 10 классов, 20 функций.

Удивительная беспомощность.

> убедительных доводов против глобальных переменных я до сих
> пор не услышал

А я и не приводил никаких доводов, бо они очевидны любому,
знакомому с основами программирования.
Я обратил внимание лишь на одно обстоятельство, осмыслить
которое ты не сумел или не захотел.

Ну, жизнь научит.

--
Regards, LVT.


DVM   (2008-08-23 16:22:00) [53]


> Leonid Troyanovsky ©   (23.08.08 15:02) [135]


> Ну, пусть это будет глобальная переменная, но незачем ее
> тянуть наружу. Наружу должна торчать функция, возвращающая
> значение оной переменной, чего тут долгого?
>

Согласен, так можно, был уверен, что так скажете, но зачем плодить лишние сущности? Плюс ко всему, а вдруг нам понадобится иметь возможность и менять значение этой глобальной переменной извне? Сделаем еще одну функцию? И того вместо одной сущности - три. Правильно, в этом случае вообще надо уж класс городить и делать переменную свойством в этом классе, а вышеупомянутые функции туда методами. Не слишком ли наворочено для всего лишь одной переменной? А если переменных таких 10? Будем делать 10 классов, 20 функций. Как хотите, но вы меня не переубедили.


> Про абсолютное зло - это не мое.
> И кричать на нас не надо.

Сами начали писать MD заглавными буквами в разных ветках.


> Не хочешь думать - не думай.
> Чужим умом не проживешь.

Чужим это вашим что ли? Вы мыслите догмами, которые сами себе выдумали и навязываете другим. На этом обсуждение заканчиваю ибо убедительных доводов против глобальных переменных я до сих пор не услышал - так болтология одна.


Игорь Шевченко   (2008-08-23 15:03:00) [54]

Тын-Дын ©   (23.08.08 12:46) [132]


> Не забудь, что руки перед едой нужно мыть.


Че, отпуск кончился, можно троллить с новыми силами ?


Leonid Troyanovsky   (2008-08-23 15:02:00) [55]


> DVM ©   (23.08.08 14:25) [134]

> Я уже писал почему переменная может быть удобнее функции.
>  Например если функция выполняется долго, а значение требуется
> в разных местах программы часто. Причем значение не меняется
> по ходу работы программы.

Чудак-человек. Переменные от констант отличаем?
Ну, пусть это будет глобальная переменная, но незачем ее тянуть наружу. Наружу должна торчать функция, возвращающая значение оной переменной, чего тут долгого?

Хотя, это все полумеры, но уж меньшее зло.

> Речь шла о том что глобальные переменные (любые) - абсолютное
> ЗЛО и MD! Это ваши слова.

Про абсолютное зло - это не мое.
И кричать на нас не надо.

> согласиться с этим можно только из нежелания признавать
> очевидный факт.

Не хочешь думать - не думай.
Чужим умом не проживешь.

--
Regards, LVT.


DVM   (2008-08-23 14:25:00) [56]


> Почему переменная в интерфейсной секции, если
> можно вызвать функцию, возвращающую нужную строку.
>

Я уже писал почему переменная может быть удобнее функции. Например если функция выполняется долго, а значение требуется в разных местах программы часто. Причем значение не меняется по ходу работы программы.


> Пока я не вижу, чего, собс-но, нужно повторно пользовать.

Код этого модуля, написанный единожды можно ПОВТОРНО ИСПОЛЬЗОВАТЬ В РАЗНЫХ ПРОЕКТАХ. Я в этом контексте понял. Или вы о каком другом понимании повторного использования говорите?


> И речь шла об объектах в модулях, содержащих
> глобальные переменные.
>

Речь шла о том что глобальные переменные (любые) - абсолютное ЗЛО и MD! Это ваши слова. В этой и соседней ветке. Ну и какой вред от глобальной переменной, что я привел? Правильно, никакого, а только сплошное удобство. И не согласиться с этим можно только из нежелания признавать очевидный факт.


{RASkov}   (2008-08-23 12:57:00) [57]

Ну хватит вам.... как маленькие :)


Тын-Дын   (2008-08-23 12:46:00) [58]


> Германн ©   (23.08.08 02:36) [110]
>
> > Тын-Дын ©   (23.08.08 02:02) [109]
> >
> >
> > > Palladin ©   (22.08.08 20:35) [105]
> >
> >
> > Хорошо сказано.
> >
> > Добавлю, что нужно быть очень осторожным и не скатываться
>
> > к догматизму во всём.
> >
>
> Не забудь  и сказать, что кажный оператор begin должен сопрвождаться
> оператором end.


Для тебя специально:

Не забудь, что руки перед едой нужно мыть.


Leonid Troyanovsky   (2008-08-23 11:43:00) [59]


> DVM ©   (23.08.08 11:19) [126]

> Для эстетов:

Пока я не вижу, чего, собс-но, нужно повторно пользовать.
Ну, и приведенный код тоже вопросы вызывает.
Почему переменная в интерфейсной секции, если
можно вызвать функцию, возвращающую нужную строку.

И речь шла об объектах в модулях, содержащих
глобальные переменные.

--
Regards, LVT.


Leonid Troyanovsky   (2008-08-23 11:37:00) [60]


> Leonid Troyanovsky ©   (23.08.08 11:34) [129]

> Зависит от задач.

Sorry, промахнулся по кнопе.

> собственно можно сделать классовый метод

Не люблю неявные конструкторы.
Поиск существующих форм и одноразовое создание,
все же, разные задачи.

Но, как я понял, идея усвоена.

--
Regards, LVT.


Страницы:   1 2 3 4 5 6 7 8 9 10

Наверх

Титульная страница Поиск, карта сайта Написать письмо