![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Помогите разобраться с порядком выполнения проги. pls! [D7, WinXP]
cvg © (2004-12-01 11:02:00)Hi All! Есть у меня некая программка, которую я уже довольно давно ковыряю, но исходник которой писан не мной. Теперь для выявления некой ошибки я свял самый простенький проект, в который включил интересующую меня ситуацию. Но теперь не могу понять: в исходной проге, насколько я понимаю, сначала выполняется то, что записано в файле .dpr, потом -- по команде Run -- управление переходит к юниту. В том же, что я накидал, управления иде сразу на Unit1.pas, в Project1.dpr вообще не заглядывает. Почему это может быть так? Ниже привожу Project1.dpr:
program Project1;
uses
Forms, SysUtils, Dialogs,
Windows, Messages, Variants, Classes, Graphics, Controls,
StdCtrls, ExtCtrls, OleServer, ClipBrd, StrUtils,
Unit1 in 'Unit1.pas' {Form1};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
// TForm1.Width := Screen.Width;
Application.Run;
end.
и Unit1.pas:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, OleServer, ClipBrd, StrUtils, math,
DateUtils, TeeProcs, TeEngine, Chart, Series, BubbleCh, Qt;
type
TForm1 = class(TForm)
Chart1: TChart;
Series1: TLineSeries;
private
{ Private declarations }
// procedure Main_cycle(FN:string;ob:Boolean);
public
{ Public declarations }
end;
var
Form1: TForm1; n:integer;
implementation
{$R *.dfm}
begin
n := 0;
repeat
n := n + 1;
Form1.Series1.AddXY(10,10,'qq',clRed);
Application.ProcessMessages;
Application.ProcessMessages;
until n > 300;
end.
Алхимик (2004-12-01 11:32:00) [1]
> на OnCreate стоит FormCreate
Дичь какая то...
cvg (2004-12-01 11:31:00) [2]А, вот, обнаружит в той исходной проге, что в Events'ах на OnCreate стоит FormCreate. Видомо, в этом дело...
cvg (2004-12-01 11:18:00) [3]То есть, типа, по Initialize выполняется все, что записано в основном теле юнита между begin и end, а потом уж идет CreateForm?
Алхимик (2004-12-01 11:17:00) [4]Form1.Series1.AddXY(10,10,'qq',clRed); и прочее вставь в обработчик OnShow твоей формы.
И почитай хоть раздел "Введение" в любой книге по Delphi.
TUser (2004-12-01 11:13:00) [5]Так правильно - Form1 пока еще не существует. Appliucation.CreateForm - еще не выполнился
cvg (2004-12-01 11:11:00) [6]В uses'е много того, что бездумно из той, большой, проги перетянул. Да и не важно это сейчас. А по основному вопросу: так я же даже на Initialize точку останова ставлю -- все равно затыкается на строке Form1.Series1.AddXY(10,10,'qq',clRed);, говорит, что Access Violation.
TUser (2004-12-01 11:06:00) [7]При Initialize - происходит исполнение кода инициализации каждого модуля, в т.ч. Unit1.
PS. Нафига так много в uses'е написано?