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

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

Ускорение запуска программы [D7, XP]


Страницы:   1 2

DJ_UZer ©   (2008-06-19 21:03:00) 

Привет всем мастерам, пожалуйста подскажите, как можно укорить запуск программы?
Или хотя бы гляньте на код при создании формы, что я делаю не так? Уж а то слишком долго грузится..
procedure TForm1.FormCreate(Sender: TObject);
var
fi: TIniFile;
begin
Application.ProcessMessages;
b := true;
scp.ItemList.LoadFromFile(ExtractFilePath(Application.ExeName)+'\templ\autohelper.alu');

fi := TIniFile.Create(ExtractFilePath(ParamStr(0)) + 'Window.ini');
Form1.Top := fi.ReadInteger('Позиция', 'top', Form1.Top);
Form1.Left := fi.ReadInteger('Позиция', 'left', Form1.Left);
Form1.Panel2.Height := fi.ReadInteger('Позиция', 'Height', Form1.Panel2.Height);
Form1.Edit3.Text := fi.ReadString('Позиция', 'Прозрачность', Form1.Edit3.Text);
Form1.ComboBox1.ItemIndex := fi.ReadInteger('Позиция', 'Web', Form1.ComboBox1.ItemIndex);
Form1.se.Gutter.Color := fi.ReadInteger('Font', 'Фон панели', Form1.se.Gutter.Color);
Form1.se.Font.Color := fi.ReadInteger('Font', 'Цвет', Form1.se.Font.Color);
Form1.se.Font.Name := fi.ReadString('Font','Шрифт', Form1.se.Font.Name);
Form1.se.Font.Size := fi.ReadInteger('Font','Размер', Form1.se.Font.Size);
Form1.se.Color := fi.ReadInteger('Font', 'Фон редактора', Form1.se.Color);
Form1.se.Gutter.Font.Color := fi.ReadInteger('Font', 'Фон пан. редактора', Form1.se.Gutter.Font.Color);
Form1.se.RightEdge := fi.ReadInteger('Font','Отступ линии', Form1.se.RightEdge);
Form1.se.RightEdgeColor := fi.ReadInteger('Font', 'Цвет линии', Form1.se.RightEdgeColor);
Form1.se.SelectedColor.Foreground := fi.ReadInteger('Font', 'Цвет выделенного', Form1.se.SelectedColor.Foreground);
Form1.se.SelectedColor.Background := fi.ReadInteger('Font', 'Фон выделенного', Form1.se.SelectedColor.Background);
Form1.se.ActiveLineColor := fi.ReadInteger('Font', 'Цвет активной', Form1.se.ActiveLineColor);
Form1.se.MaxUndo := fi.ReadInteger('Font', 'Max Undo', Form1.se.MaxUndo);
Form1.se.WordWrap := fi.ReadBool('Font', 'Перенос', Form1.se.WordWrap);
Form1.fled.Text := fi.ReadString('Font', 'FileName Open/Save', Form1.fled.Text);
Form1.sb.Visible := fi.ReadBool('Font', 'sb.Visible', Form1.sb.Visible);
Form1.se.Gutter.Visible := fi.ReadBool('Font', 'se.Gutter.Visible', Form1.se.Gutter.Visible);
Form1.se.Gutter.ShowLineNumbers := fi.ReadBool('Font', 'Gutter.ShowLineNumbers', Form1.se.Gutter.ShowLineNumbers);
Form1.se.Gutter.ZeroStart := fi.ReadBool('Font', 'Gutter.ZeroStart', Form1.se.Gutter.ZeroStart);
Form1.se.BookMarkOptions.EnableKeys := fi.ReadBool('Font', 'sb.BookMarkOptions.EnableKeys', Form1.se.BookMarkOptions.EnableKeys);
Form1.se.BookMarkOptions.GlyphsVisible := fi.ReadBool('Font', 'BookMarkOptions.GlyphsVisible', Form1.se.BookMarkOptions.GlyphsVisible);
Form1.acrAutoCorrect.Enabled := fi.ReadBool('Font', 'acrAutoCorrect.Enabled', Form1.acrAutoCorrect.Enabled);
Form1.Panel1.Visible := fi.ReadBool('Font', 'Panel1.Visible', Form1.Panel1.Visible);
Form1.CheckBox10.Checked := fi.ReadBool('Font', 'CheckBox10.Checked', Form1.CheckBox10.Checked);
Form1.panel2.Visible := fi.ReadBool('Font', 'panel2.Visible', Form1.panel2.Visible);
Form1.CheckBox12.Checked := fi.ReadBool('Font', 'CheckBox12.Checked', Form1.CheckBox12.Checked);
Form1.ToolButton30.Visible := fi.ReadBool('Font', 'b1.Checked', Form1.ToolButton30.Visible);
Form1.ToolButton9.Visible := fi.ReadBool('Font', 'b2.Checked', Form1.ToolButton9.Visible);
Form1.CheckBox13.Checked := fi.ReadBool('Font', 'CheckBox13.Checked', Form1.CheckBox13.Checked);
Form1.sb.Visible := fi.ReadBool('Font', 'sb.Visible', Form1.sb.Visible);
Form1.edit1.Text := fi.ReadString('Font', 'edit1.Text', Form1.edit1.Text);
//Form1.N100.Checked := fi.ReadBool('Font', 'Checked1', Form1.N100.Checked);
//Form1.N102.Checked := fi.ReadBool('Font', 'Checked2', Form1.N102.Checked);
//Form1.N103.Checked := fi.ReadBool('Font', 'Checked3', Form1.N103.Checked);
Form1.sh.ItemIndex := fi.ReadInteger('Шаблон', 'Номер', Form1.sh.ItemIndex);
Form1.edit2.Text := fi.ReadString('Браузер', '1', Form1.edit2.Text);
Form1.edit4.Text := fi.ReadString('Браузер', '2', Form1.edit4.Text);
n := fi.ReadInteger('Popul', 'pl', n);
n := n + 1;
fi.WriteInteger('Popul', 'pl', n);
fi.Destroy;

 { Load from registry. }
 form1.acrAutoCorrect.LoadFromRegistry(HKEY_CURRENT_USER,
   'Software\Aerodynamica\Components\SynAutoCorrect\OLU');

op.InitialDir := ExtractFilePath(ParamStr(0));
sd.InitialDir := op.InitialDir;
Button1.Click;

If ComboBox1.ItemIndex = 0 then begin
If form1.Panel2.Width < form1.Panel2.Height then
form1.Panel2.Height := form1.Panel2.Width;
form1.Panel2.Align := alBottom;
form1.Splitter1.Align := alBottom;
form1.web.Align := alClient;
end;
If ComboBox1.ItemIndex = 1 then begin
If form1.Panel2.Width < form1.Panel2.Height then
form1.Panel2.Height := form1.Panel2.Width;
form1.Panel2.Align := alTop;
form1.Splitter1.Align := alTop;
form1.web.Align := alClient;
end;
If ComboBox1.ItemIndex = 2 then begin
If form1.Panel2.Width > form1.Panel2.Height then
form1.Panel2.Width := form1.Panel2.Height;
form1.Splitter1.Align := alLeft;
form1.Panel2.Align := alLeft;
form1.web.Align := alClient;
end;
If ComboBox1.ItemIndex = 3 then begin
If form1.Panel2.Width > form1.Panel2.Height then
form1.Panel2.Width := form1.Panel2.Height;
form1.Panel2.Align := alRight;
form1.Splitter1.Align := alRight;
form1.web.Align := alClient;
end;
   
If (ParamCount = 0) and (CheckBox10.Checked = true) then begin
If form1.sh.ItemIndex = 0 then html1.Click;
If form1.sh.ItemIndex = 1 then CSS1.Click;
If form1.sh.ItemIndex = 2 then JavaScript2.Click;
If form1.sh.ItemIndex = 3 then php2.Click;
If form1.sh.ItemIndex = 4 then perl2.Click;
end
else
N77.Click;

form1.WindowState := wsMaximized;
end;


DJ_UZer   (2008-06-20 20:23:00) [1]

TUserClass, похоже нет, придется при работе программы сделать, а без этой строки грузится очень быстро..) Всем спасибокто помог разобратся!


TUserClass   (2008-06-20 11:13:00) [2]

А Navigate разве не в отдельном потоке выполняется? :)


Правильный-Вася   (2008-06-20 11:10:00) [3]


>  тормозит вот это web.Navigate

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


Anatoly Podgoretsky   (2008-06-20 10:11:00) [4]

> ЮЮ  (20.06.2008 9:24:17)  [17]

Какой именно экземпляр?


Anatoly Podgoretsky   (2008-06-20 10:10:00) [5]


> DJ_UZer ©   (20.06.08 01:30) [15]
> Я проверил, да это было при show, а тормозит вот это web.
> Navigate((ExtractFilePath(Application.ExeName))+'temp.html');
> , можно не скромный вопрос,

Убери web.Navigate не дело это делать при запуске.


Anatoly Podgoretsky   (2008-06-20 10:09:00) [6]

> DJ_UZer  (20.06.2008 1:11:14)  [14]

Вообще то это прерогатива программиста.
Так ты нашел в какой строке тормозит?


ЮЮ   (2008-06-20 09:24:00) [7]

а сколько грузит ту же страницу IE?


Loginov Dmitry   (2008-06-20 07:43:00) [8]

> Я проверил, да это было при show, а тормозит вот это web.Navigate((Extrac
> tFilePath(Application.ExeName))+'temp.html');, можно не
> скромный вопрос, почему? Ее убираешь и программа грузится,
> без проблем..а вот с ней к загрузке прибовляется аж 10
> сек.??


Зависит от размера html-файла.
Размер temp.html какой?


DJ_UZer   (2008-06-20 01:30:00) [9]

Я проверил, да это было при show, а тормозит вот это web.Navigate((ExtractFilePath(Application.ExeName))+'temp.html');, можно не скромный вопрос, почему? Ее убираешь и программа грузится, без проблем..а вот с ней к загрузке прибовляется аж 10 сек.??


DJ_UZer   (2008-06-20 01:11:00) [10]

Loginov Dmitry, а может быть такое, что какой то компонент тормозит запуск программы?


Loginov Dmitry   (2008-06-19 23:56:00) [11]

> Вот именно, а где тогда?


возможно, в FormShow, возможно в другом месте.


DJ_UZer   (2008-06-19 23:52:00) [12]

Вот именно, а где тогда?


Loginov Dmitry   (2008-06-19 23:33:00) [13]

> пишет что 45 мс


Так значит тормоза не на TForm1.FormCreate!


DJ_UZer   (2008-06-19 23:29:00) [14]

Loginov Dmitry, пишет что 45 мс, но форма все ровно определенное время находится в минимизайт и не доступна! Может в это время прорисовываются используемые компоненты, хотя они не должны сильно загружать программу, я так думаю, если только не браузер..


DJ_UZer   (2008-06-19 23:24:00) [15]

Loginov Dmitry, пишет что 45 мс, но форма все ровно определенное время находится в минимизайт и не доступна! Может в это время прорисовываются используемые компоненты, хотя они не должны сильно загружать программу, я так думаю, если только не браузер..


Anatoly Podgoretsky   (2008-06-19 22:54:00) [16]

Да нафига какой то еще код, если для определения достаточно F8


Loginov Dmitry   (2008-06-19 22:41:00) [17]

> Уж а то слишком долго грузится..


Ты должен сам определить проблемный участок кода. Примерно так:

procedure Proc;
var
 Tc: DWORD;
begin
 Tc := GetTickCount();

 // здесь расположить исследуемый участок кода
 ..............................................

 Tc := GetTickCount() - Tc;

 // Проверяешь, сколько было затрачено времени
 if Tc > 20 then
   ShowMessageFmt('Задержка составила %d мс', [Tc]);
end;


Правильный-Вася   (2008-06-19 22:33:00) [18]


> ри помощи него действия выполняются не по очередно, а по
> мере выполнения

истина
> (как я понял все сразу)

ложь

читать нужно в справке, а не в желтой прессе


DJ_UZer   (2008-06-19 22:31:00) [19]

palva, я даже не знаю какая именно..а насчет Application.ProcessMessages;гдет прочел, что при помощи него действия выполняются не по очередно, а по мере выполнения (как я понял все сразу)..


Anatoly Podgoretsky   (2008-06-19 21:59:00) [20]

> palva  (19.06.2008 21:52:03)  [3]

Плохо дело.


Страницы:   1 2

Наверх

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