Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.07.29;
Скачать: CL | DM;

Вниз

Почему может долго грузится программа?   Найти похожие ветки 

 
delphino   (2007-07-03 11:19) [0]

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

Application.Initialize;
 Application.CreateForm(TDataModule2, DataModule2);

 vhodForm:=TvhodForm.Create(nil);
 if vhodForm.ShowModal=1 then
 begin
   Application.CreateForm(Tmain, main);
   Application.CreateForm(Tclient, client);
   Application.CreateForm(TsysfindForm, sysfindForm);
   Application.CreateForm(TfiltsiForm, filtsiForm);
   Application.CreateForm(TfiltstatForm, filtstatForm);
   Application.CreateForm(TfiltrukForm, filtrukForm);
   Application.CreateForm(TfiltrivForm, filtrivForm);
   Application.CreateForm(TfiltsysForm, filtsysForm);
   Application.CreateForm(TfiltcatForm, filtcatForm);
   Application.CreateForm(Tlistsi1Form, listsi1Form);
   Application.CreateForm(TdobdataForm, dobdataForm);
   Application.CreateForm(TsrokdogForm, srokdogForm);
   Application.CreateForm(TdangForm, dangForm);
   Application.CreateForm(TNewrukovForm, NewrukovForm);
   Application.CreateForm(TChsysForm, ChsysForm);
   Application.CreateForm(TNewdataForm, NewdataForm);
   Application.CreateForm(TAboutForm, AboutForm);
   Application.CreateForm(TpersysForm, persysForm);
   Application.CreateForm(TNewsiForm, NewsiForm);
   Application.CreateForm(Tmanager, manager);
   Application.CreateForm(Tpodschet, podschet);
   Application.CreateForm(Tsiform, siform);
   Application.CreateForm(Tsysform, sysform);
   Application.CreateForm(Thisdogform, hisdogform);
   Application.CreateForm(Teventform, eventform);
   Application.CreateForm(Trivalform, rivalform);
   Application.CreateForm(TNewsysForm, NewsysForm);
   Application.CreateForm(TNewdogForm, NewdogForm);
   Application.CreateForm(TTekdogForm, TekdogForm);
   Application.CreateForm(TNewatackForm, NewatackForm);
   Application.CreateForm(TNewevent, Newevent);
   Application.CreateForm(TotForm, otForm);
   Application.CreateForm(TpsForm, psForm);
   Application.CreateForm(TChdogForm, ChdogForm);
   Application.CreateForm(TChevForm, ChevForm);
   Application.Run;
 end;

Как этого избежать?


 
ЮЮ ©   (2007-07-03 11:25) [1]

> Раньше программа быстро загружалась, а сейчас очень медленно


Application.CreateForm(TDataModule2, DataModule2);
Раньше в таблицах было мало данных, а теперь полно, а НД открыты в дизайне

Да и формы убрать из списка автооткрываемых (или просто тупо вырезать из dpr
Application.CreateForm(Tclient, client);
  Application.CreateForm(TsysfindForm, sysfindForm);
  ...
  Application.CreateForm(TChevForm, ChevForm);)
и вставить строки создания при первой попытке использования форм


 
Игорь Шевченко ©   (2007-07-03 11:26) [2]


> Раньше программа быстро загружалась, а сейчас очень медленно


Луна ушла из созвездия Весов ?


 
DrPass ©   (2007-07-03 11:54) [3]


> Как этого избежать?

Хм... а не создавать все эти формы сразу пробовал? Чесслово, должно помочь


 
ЮЮ ©   (2007-07-03 12:19) [4]

И все-таки первым делом, Настя, позакрвывай в дизайне все TTable, коих ещё полтора месяца назад бвло 17 и открывай их как-нибудь постепенно, коль не отказалась от них совсем, как советовали :)


 
delphino   (2007-07-04 02:37) [5]


> коль не отказалась от них совсем, как советовали :)

Ну не смогла отказаться, втянулась.:) Просто когда я только начала изучать БД в DELPHI везде было написано в основном про BDE. Уже несколько раз пожалела о своем выборе, ну все когда проходят период "чайников".

> Application.CreateForm(TDataModule2, DataModule2);
> Раньше в таблицах было мало данных, а теперь полно, а НД
> открыты в дизайне

Так DataModule образуется до открытия формы vhodForm, а она загружается быстро.


> а не создавать все эти формы сразу пробовал?

вот про это я и спрашиваю...можно ли эти формы в главной создавать, например?


 
Германн ©   (2007-07-04 02:40) [6]


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

Можно и нужно создавать их там и тогда, где и когда нужно.


 
{RASkov} ©   (2007-07-04 02:52) [7]

> [5] delphino   (04.07.07 02:37)
> вот про это я и спрашиваю...можно ли эти формы в главной
> создавать, например?

>.....
  Application.CreateForm(TAboutForm, AboutForm);
  Application.CreateForm(TpersysForm, persysForm);
  .....

Не необходимости создавать все формы сразу при старте программы... Т.е, например форму "О программе", может быть за все время работы программы ее ниразу и не откроют. А ее создание при старте отнимает время... Нужно как можно больше выкинуть форм из Autocreate в опциях проекта... А в программе создавать их по мере надобности, например:
procedure TForm.MenuAboutClick(Sender: TObject);
begin
 with TAboutForm.Create(nil) do
 try
  ShowModal;
 finally
  Free;
 end;
end;


 
Kostafey ©   (2007-07-04 03:02) [8]

Читая ветку заинтересовался.
Открываю исходник одного довольно большого проекта.
Вижу, что в dpr - файле 2/3 строк Application.CreateForm
закомментированы.

Похоже, на практике это часто применяют.
Даже несмотря на это время загрузки приложения составляет
~5 сек (P4 Core Duo, RAM 1024).


 
{RASkov} ©   (2007-07-04 03:20) [9]

> [8] Kostafey ©   (04.07.07 03:02)

Application.Run; - вот эта строка собственно и говорит, что процесс загрузки достигнут и началась обработка сообщений виндовс...
А до нее выполняется создание форм, соответственно выполнение всех OnCreate.... и соответственно, "тянется" время загрузки программы...

> Даже несмотря на это время загрузки приложения составляет

Можно сотню форм создать и будет быстро, а может и создание одной формы прилично тормозить "процесс запуска" программы....
> delphino
Так же если в дизайнере присутствуют "активные" ДатаСеты, то при старте программы они также открываются и это тоже может занимать время... Вообщем много от чего зависит время загрузки, но если поубирать все "не нужное" из автокреате, то можно значительно уменьшить время на "пуск" программы...
К "Не нужному" можно отнести все, что не отображается сразу после старта программы... так же в дизайнере все ДатаСеты, которые тоже не нужны сразу после старта, можно сделать Активе=Фолс.....


 
delphino   (2007-07-04 04:30) [10]

DatasetЫ закрыла. Вот только не пойму в какой обработчик событий формы можно поместить создание других форм, пробовала перед прорисовкой в OnShow, вроде работает, правильно ли это? И еще вопрос перед закрытием приложения обязательно использовать процедуру Free для освобождения всех форм?


 
{RASkov} ©   (2007-07-04 05:11) [11]

> Вот только не пойму в какой обработчик событий формы можно
> поместить создание других форм

В любой подходящий для создаваемой формы См. пример в [7] для окна "О программе", которое создается, показывается и удаляется в обработчике ОнКлик элемента меню.... Незачем их(окна) все разом создавать....

> И еще вопрос перед закрытием приложения обязательно использовать
> процедуру Free для освобождения всех форм?

После закрытия приложения все равно всё будет уничтожено :)


 
Игорь Шевченко ©   (2007-07-04 11:06) [12]


> Просто когда я только начала изучать БД в DELPHI везде было
> написано в основном про BDE. Уже несколько раз пожалела
> о своем выборе


BDE вполне хорош, про него не зря пишут. Жалеть совсем нечего.

У меня в проектах стоит от 20 до 50 вызовов Application.CreateForm, правда создаются не формы, а датамодули. Все запускается пулей. Я опять что-то делаю не так ?


 
DrPass ©   (2007-07-04 11:34) [13]


> Вот только не пойму в какой обработчик событий формы можно
> поместить создание других форм, пробовала перед прорисовкой
> в OnShow, вроде работает, правильно ли это?

Не совсем так. Смысл не в том, что создание всех форм надо забабахать где-нибудь в другом месте, а в том, чтобы не создавать их все сразу. Т.е. формы должны создаваться только тогда, когда они действительно нужны. Например, окошко About создавай при выборе пункта "О программе" в меню. И убивать после закрытия.



Страницы: 1 вся ветка

Текущий архив: 2007.07.29;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.026 c
2-1183654535
Romm
2007-07-05 20:55
2007.07.29
Из страницы в приложение


15-1182927174
Ega23
2007-06-27 10:52
2007.07.29
DragAndDrop - краткий ликбез


2-1183624901
nord489
2007-07-05 12:41
2007.07.29
MainMenu


2-1183357389
Slider007
2007-07-02 10:23
2007.07.29
Два вопроса по индексам


15-1183015789
de.
2007-06-28 11:29
2007.07.29
Нужна картинка