![]() |
|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
![]() Всем доброго времени суток! Работаю с делфи недавно и вот появился вопрос, на который я легко нашел ответ в интернете. Но теперь что то не работает и я никак не могу найти ошибку.
У меня есть три модуля. TV1 - основной и два вспомогательных: MO и Unite3. Задача: из MO загрузить массив в TV1, откуда она попадет в Unite3. При проверке оказалось, что значения в TV1передаются и даже записываются в Form3.*переменная* но вот в самой Form3 не выводятся почему. Ну не получает форма значения, ну никак. Помогите найти ошибку, пожалуйста. Код:
unit MO; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Math, Grids; type TForm2 = class(TForm) Label1: TLabel; Label2: TLabel; Memo: TMemo; Label3: TLabel; SG: TStringGrid; Label4: TLabel; Label5: TLabel; procedure FormActivate(Sender: TObject); procedure FormMouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); procedure FormMouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); private { Private declarations } public { Public declarations } M : double; Mass : Array[1..100] of double; end; const Form2: TForm2 = nil; Var PO : Array[1..10] of real; implementation Uses TV1, Unit3; {$R *.dfm} procedure TForm2.FormActivate(Sender: TObject); Var i,j,p,op:integer; Chr:String; Sum,s:double; begin //Вывод общего Мо Label2.Caption:='Математическое ожидание= '+FloatToStr(M)+#13+#13+'Матeматическое ожидание рассчитывает' +' по формуле: M=x1*p1+x2*p2+... где x-это номинал, а p-вероятность.'+#13+'Мат. Ожидание=Сумме произведения' +' номинала на вероятность.'; // Рассчет и вывод оценки Memo.Lines.Insert(0, 'Оценка Математического ожидания'+#13); Memo.Lines.Insert(1, ''); Memo.Lines.Insert(2, 'Оценка Математического ожидания считается по формуле: 1\n(x1+...xn). Все результаты округлены до 4 цифр после запятой.'); p:=10; op:=1; for i:=3 to 22 do Begin sum:=0; Chr:=''; for j:=1 to p do Begin Sum:=sum+Mass[j]; Chr:=Chr+FloatToStr(Mass[j])+' + '; End; Delete(Chr,Length(Chr)-2,3); if (i mod 2)=0 then Memo.Lines.Insert(i,'') else begin Memo.Lines.Insert(i,'M'+IntToStr(op)+'= '+'1/'+IntToStr(p)+'*'+'('+Chr+')= '+FloatToStr(RoundTo(Sum/p,-4))+#13); SG.Cells[op-1,0]:=IntToStr(p); SG.Cells[op-1,1]:=FloatToStr(RoundTo(Sum/p,-4)); PO[op]:=RoundTo(Sum/p,-4); p:=p+10; op:=op+1; End; End; for i:=1 to 10 do Form1.PO[i]:=PO[i]; end; //Прокрутка вверх и вниз procedure TForm2.FormMouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin VertScrollBar.Position:=VertScrollBar.Position+10; end; procedure TForm2.FormMouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin VertScrollBar.Position:=VertScrollBar.Position-10; end; end. Код:
unit Unit3; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Math, Grids; type TForm3 = class(TForm) Label1: TLabel; Label2: TLabel; Mem: TMemo; Label3: TLabel; Memo12: TMemo; Memo13: TMemo; Memo14: TMemo; Memo15: TMemo; Memo16: TMemo; Memo17: TMemo; Memo18: TMemo; Memo19: TMemo; Memo110: TMemo; Memo11: TMemo; SG: TStringGrid; Label4: TLabel; Label5: TLabel; procedure FormCreate(Sender: TObject); procedure FormMouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); procedure FormMouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); procedure FormActivate(Sender: TObject); private { Private declarations } public { Public declarations } D : double; Mass : Array[1..100] of double; PO : Array[1..10] of real; end; Const Form3: TForm3 = nil; implementation uses TV1, MO; {$R *.dfm} procedure TForm3.FormCreate(Sender: TObject); Var i,j,p,op:integer; Chr:String; Sum,s:double; begin Label2.Caption:='Дисперсия= '+FloatToStr(D)+#13+#13+'Дисперсия рассчитывается' +' по формуле: D=x1^2*p1+x2^2+p2...-M где M- мат. ожидание'+#13; Mem.Lines.Insert(0, 'Оценка дисперсии'+#13); Mem.Lines.Insert(1, ''); Mem.Lines.Insert(2, 'Оценка дисперсии считается по формуле: 1\n((x1-M1)^2+...+(xn-Mn)^2). Все значение округлены до 4 знаков после запятой.'); p:=10; op:=1; for i:=3 to 22 do Begin sum:=0; Chr:=''; for j:=1 to p do Begin Sum:=sum+Power(Mass[j]-PO[op],2); Chr:=Chr+'('+FloatToStr(Mass[j])+' - '+FloatToStr(PO[op])+')'+'^'+'2'+' + '; End; Delete(Chr,Length(Chr)-2,3); if (i mod 2)=0 then Mem.Lines.Insert(i,'') else begin Mem.Lines.Insert(i,'D'+IntToStr(op)+'= '{+'1/'+IntToStr(p)+'*'+'('+Chr+')= '}+FloatToStr(RoundTo(Sum/p,-4))+#13); SG.Cells[op-1,0]:=IntToStr(p); SG.Cells[op-1,1]:=FloatToStr(RoundTo(Sum/p,-4)); Case op of 1 : Memo12.Lines.Insert(1,'D'+IntToStr(op)+'= '+'1/'+IntToStr(p)+'*'+'('+Chr+')= '+FloatToStr(RoundTo(Sum/p,-4))+#13); 2 : Memo13.Lines.Insert(1,'D'+IntToStr(op)+'= '+'1/'+IntToStr(p)+'*'+'('+Chr+')= '+FloatToStr(RoundTo(Sum/p,-4))+#13); 3 : Memo14.Lines.Insert(1,'D'+IntToStr(op)+'= '+'1/'+IntToStr(p)+'*'+'('+Chr+')= '+FloatToStr(RoundTo(Sum/p,-4))+#13); 4 : Memo15.Lines.Insert(1,'D'+IntToStr(op)+'= '+'1/'+IntToStr(p)+'*'+'('+Chr+')= '+FloatToStr(RoundTo(Sum/p,-4))+#13); 5 : Memo16.Lines.Insert(1,'D'+IntToStr(op)+'= '+'1/'+IntToStr(p)+'*'+'('+Chr+')= '+FloatToStr(RoundTo(Sum/p,-4))+#13); 6 : Memo17.Lines.Insert(1,'D'+IntToStr(op)+'= '+'1/'+IntToStr(p)+'*'+'('+Chr+')= '+FloatToStr(RoundTo(Sum/p,-4))+#13); 7 : Memo18.Lines.Insert(1,'D'+IntToStr(op)+'= '+'1/'+IntToStr(p)+'*'+'('+Chr+')= '+FloatToStr(RoundTo(Sum/p,-4))+#13); 8 : Memo19.Lines.Insert(1,'D'+IntToStr(op)+'= '+'1/'+IntToStr(p)+'*'+'('+Chr+')= '+FloatToStr(RoundTo(Sum/p,-4))+#13); 9 : Memo110.Lines.Insert(1,'D'+IntToStr(op)+'= '+'1/'+IntToStr(p)+'*'+'('+Chr+')= '+FloatToStr(RoundTo(Sum/p,-4))+#13); 10 : Memo11.Lines.Insert(1,'D'+IntToStr(op)+'= '+'1/'+IntToStr(p)+'*'+'('+Chr+')= '+FloatToStr(RoundTo(Sum/p,-4))+#13); End; p:=p+10; op:=op+1; End; End; end; procedure TForm3.FormMouseWheelUp(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin VertScrollBar.Position:=VertScrollBar.Position-10; end; procedure TForm3.FormMouseWheelDown(Sender: TObject; Shift: TShiftState; MousePos: TPoint; var Handled: Boolean); begin VertScrollBar.Position:=VertScrollBar.Position+10; end; procedure TForm3.FormActivate(Sender: TObject); begin if Form2=nil then begin ShowMessage('Вы не посчитали математическое ожидание!'); Exit; End; end; end Код:
program Project1; uses Forms, TV1 in 'TV1.pas' {Form1}, MO in 'MO\MO.pas' {Form2}, Unit3 in 'DISCR\Unit3.pas' {Form3}; {$R *.res} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. |