powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Вопрос по динамическому созданию компонеты
12 сообщений из 37, страница 2 из 2
Вопрос по динамическому созданию компонеты
    #32071279
_TwoAll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
есть ряд типовых операций с базой (много). Для каждой громозкая форма с математикой. Все это в одном проекте "Типа интерфейс вызова типовых операций".
Кажется логично держать формы которые могут непонадобиться в динамичи подгружаемых dll. Или что я не понимаю?
...
Рейтинг: 0 / 0
Вопрос по динамическому созданию компонеты
    #32071286
Фотография hDrummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ИМХО это зависит от многих условий.

+ нахождения в dll я вижу такой: если на машине мало оперативной памяти, то динамически подгружая/освобождая библиотеку ты более оптимально её используешь. Опять же размер ехе-шника меньше.
Но мне кажется (я уже писал) лучше создавать/освобождать сами формы по мере обращения.

- неудобно таскать эти библиотеки с собой,
добавочный кодинг, проверки и т.д.
...
Рейтинг: 0 / 0
Вопрос по динамическому созданию компонеты
    #32071293
_TwoAll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
но еше размер стартовой екзешки мне критичен так как должен лежать на сети
...
Рейтинг: 0 / 0
Вопрос по динамическому созданию компонеты
    #32071302
Фотография KirillovA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В инете?
...
Рейтинг: 0 / 0
Вопрос по динамическому созданию компонеты
    #32071369
_TwoAll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
внутри, но на другом конце выделенки
...
Рейтинг: 0 / 0
Вопрос по динамическому созданию компонеты
    #32071392
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
но еше размер стартовой екзешки мне критичен так как должен лежать на сети

А Dll тебе чего, по сети не надо будет таскать? Это сто лет назад такими делами страдали, а сейчас то чего? Или книги только старые по программированию? :))

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

И самый лучший способ, который уже предлагали - когда форма нужна - создавать, когда закрываешь - удаляй:
procedure Form1.OnClose(...)
...
Action := caFree;
Form1 := nil;
...
end;

и все будет хорошо.
А для отчетов другое что-нить юзай, FastReport, например
...
Рейтинг: 0 / 0
Вопрос по динамическому созданию компонеты
    #32071436
Фотография hDrummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>1. Никогда не юзай Destroy. Юзай Free. Долго объяснять почему...

Oбъяснять не долго. Стандартный метод Free:
If Assigned(P) then Destroy;

т.е. осуществляется проверка объекта - жив или нет,
чтобы не уничтожить его два раза. Поэтому free можно вызывать сколько угодно раз и всё будет ОК.
...
Рейтинг: 0 / 0
Вопрос по динамическому созданию компонеты
    #32071460
Фотография KirillovA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> hDrummer
Это самый простой пример, я имел ввиду в случае наследования, полиморфа, абстрактых методов, перекрытия vmt и прочего.
а это любой знает.
...
Рейтинг: 0 / 0
Вопрос по динамическому созданию компонеты
    #32071520
Фотография hDrummer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>Это самый простой пример, я имел ввиду в случае >>наследования, полиморфа, абстрактых методов, >>перекрытия vmt и прочего.
>>а это любой знает.

ну накидал терминов...
прямо дрожь должна брать, чтоли?

Стандартный метод Free для наследования
If Assigned(P) then Destroy;
inherited Free;

для абстрактных методов какой ещё Free?

причём здесь перекрытие vmt?
...
Рейтинг: 0 / 0
Вопрос по динамическому созданию компонеты
    #32071525
Фотография tygra
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Человек дурью мается, а мы тут советы даем :()
...
Рейтинг: 0 / 0
Вопрос по динамическому созданию компонеты
    #32071537
Фотография KirillovA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен с tygra )))
Хватит идиотничать, господа, оффтопик сплошной... а мы тут начинаем перетирать.
Не хай сам мучается автор сабжа... я б на его месте хоть маленькую книжку прочел прежде чем забивать головы адвансенд юзверям.
...
Рейтинг: 0 / 0
Вопрос по динамическому созданию компонеты
    #32071817
_TwoAll
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Только что провел експеримент. (WinNT40) На форму 2 поместил репорт. В первом случае создаю форму
так :
Form2 := TForm2.Create (Application);
...
удаляю так :
Form2.Free;
Form2 := nil;
Во втором случае (пример не привожу, есть на ссылках выше) работаю с той же формой 2, но которая у меня в динамической dll.
Так вот во втором случае при "выгрузке" dll память у меня очищается на _столько_ же насколько увеличивается при ее "загрузке". А в первом примере только процентов на 5. Значит держать формы в dll иногда может быть хорошо. Конечно нужно иметь в виду сложность кода и прочие "прелести" dll. И беспорно что это не имеет смысла когда есть 100% уверенность что dll будет использоваться. Да, практическая полезность такого решения чаще сомнительна. Но хотя бы в теории это интересно. Еще раз всем искреннее спасибо!
...
Рейтинг: 0 / 0
12 сообщений из 37, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Вопрос по динамическому созданию компонеты
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]