Текущий архив: 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.51 MB
Время: 0.029 c