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

Вниз

Ускорение запуска программы   Найти похожие ветки 

 
DJ_UZer ©   (2008-06-19 21:03) [0]

Привет всем мастерам, пожалуйста подскажите, как можно укорить запуск программы?
Или хотя бы гляньте на код при создании формы, что я делаю не так? Уж а то слишком долго грузится..
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;


 
Anatoly Podgoretsky ©   (2008-06-19 21:20) [1]

> DJ_UZer  (19.06.2008 21:03:00)  [0]

Какая именно строка долго выполняется?


 
Правильный-Вася   (2008-06-19 21:45) [2]

мамма мия!
зачем везде Form1 писать?
Application.ProcessMessages в начале нафиг не надо

код форматировать не учили?


 
palva ©   (2008-06-19 21:52) [3]


> Какая именно строка долго выполняется?

Вот эта:
Application.ProcessMessages;


 
Anatoly Podgoretsky ©   (2008-06-19 21:59) [4]

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

Плохо дело.


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

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


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


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

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

ложь

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


 
Loginov Dmitry ©   (2008-06-19 22:41) [7]

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


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

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

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

 Tc := GetTickCount() - Tc;

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


 
Anatoly Podgoretsky ©   (2008-06-19 22:54) [8]

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


 
DJ_UZer ©   (2008-06-19 23:24) [9]

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


 
DJ_UZer ©   (2008-06-19 23:29) [10]

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


 
Loginov Dmitry ©   (2008-06-19 23:33) [11]

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


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


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

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


 
Loginov Dmitry ©   (2008-06-19 23:56) [13]

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


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


 
DJ_UZer ©   (2008-06-20 01:11) [14]

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


 
DJ_UZer ©   (2008-06-20 01:30) [15]

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


 
Loginov Dmitry ©   (2008-06-20 07:43) [16]

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


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


 
ЮЮ ©   (2008-06-20 09:24) [17]

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


 
Anatoly Podgoretsky ©   (2008-06-20 10:09) [18]

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

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


 
Anatoly Podgoretsky ©   (2008-06-20 10:10) [19]


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

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


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

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

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


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


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

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


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

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


 
DJ_UZer ©   (2008-06-20 20:23) [23]

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



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

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

Наверх




Память: 0.53 MB
Время: 0.031 c
1-1195656625
GIo
2007-11-21 17:50
2008.07.20
Помогите разобраться


2-1213966686
nata
2008-06-20 16:58
2008.07.20
Русские идентификаторы в Delphi for .Net (BDS 2006)


3-1202362597
9899100
2008-02-07 08:36
2008.07.20
interbase база данных под Firebird


4-1192827598
i
2007-10-20 00:59
2008.07.20
Prevent service&amp;process from stopping


15-1212582496
TStas
2008-06-04 16:28
2008.07.20
Что значит: Группы Google: Ваш адрес был добавлен в группу MPST?