Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.11.2013, 03:05
Vavilon11 Vavilon11 вне форума
Прохожий
 
Регистрация: 10.11.2013
Сообщения: 7
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Перенос переменных между формами

Всем доброго времени суток! Работаю с делфи недавно и вот появился вопрос, на который я легко нашел ответ в интернете. Но теперь что то не работает и я никак не могу найти ошибку.
У меня есть три модуля. TV1 - основной и два вспомогательных: MO и Unite3. Задача: из MO загрузить массив в TV1, откуда она попадет в Unite3.
При проверке оказалось, что значения в TV1передаются и даже записываются в Form3.*переменная* но вот в самой Form3 не выводятся почему. Ну не получает форма значения, ну никак. Помогите найти ошибку, пожалуйста.
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
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.

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
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

Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
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.
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 06:36.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025