Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.07.29;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.055 c
2-1183457683
kilya
2007-07-03 14:14
2007.07.29
ошибка Circular unit reference


2-1183355919
Alex8
2007-07-02 09:58
2007.07.29
Изменение редактора полей в RunTime


2-1183635867
Кирей
2007-07-05 15:44
2007.07.29
Подключение сетевого диска


2-1183092871
Novice
2007-06-29 08:54
2007.07.29
программа для работы с базой IB в длинной сети


15-1183098004
Alkid
2007-06-29 10:20
2007.07.29
wmp.dll





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский