Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi для начинающих

Войти
Регистрация
Восстановить пароль
 
Вовкин
22 / 23 / 1
Регистрация: 17.07.2012
Сообщений: 234
#1

Обращение к конструктору нового класса - Delphi

01.12.2014, 13:54. Просмотров 229. Ответов 1
Метки нет (Все метки)

Доброе время суток.

Есть программа:
Delphi
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
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
unit Unit1;
 
interface
 
uses
  Windows, Messages,SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs,Math, StdCtrls, ExtCtrls,DateUtils ,Contnrs;
 
type
 TCustomer = class
 //constructor create;
 
  private
  CustomerNomer :integer;
  CustomerPotok :integer;
  CustomerVremya :double;
 
  public
  property Nomer:integer
   read CustomerNomer;
  property Potok:integer
   read CustomerPotok;
  property Vremya:double
    read   CustomerVremya;
 
  constructor Create(const CustomerNomer :integer;
                     const CustomerPotok :integer;
                     const CustomerVremya :double);
    end;
 
  TForm1 = class(TForm)
    alfa: TEdit;
    Label1: TLabel;
    Button1: TButton;
    betta: TEdit;
    Label2: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Label8: TLabel;
    Timer1: TTimer;
    Timer2: TTimer;
    Timer3: TTimer;
    Timer4: TTimer;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Timer2Timer(Sender: TObject);
    procedure Timer3Timer(Sender: TObject);
    procedure FormCreate(Sented: TObject);
    
  private
  myList: TList;
   Procedure showListContents;
    { Private declarations }
  public
  procedure gamma1;
  procedure gamma2;
  procedure gamma3;
  procedure Veibula;
  procedure LogNorm;
  procedure FormCreate(Sented: TObject);
    { Public declarations }
  end;
 
var
  Form1: TForm1;
  z: integer;
  w: integer;
 
implementation
 
{$R *.dfm}
//------------------------------------------------------
//Конструктор сохранение переданных пораметров
constructor Tcustomer.Create(const CustomerNomer :integer;
                             const CustomerPotok :integer;
                             const CustomerVremya :double);
begin
 self.CustomerNomer:= CustomerNomer;
 self.CustomerPotok:= CustomerPotok;
 self.CustomerVremya:= CustomerVremya;
end;
//-------------------------------------------------------
//Для показа содержимого нашего списка
 
procedure TForm1.ShowListContents;
var
  i : Integer;
begin
  // И повторный показ списка
  for i := 0 to myList.Count-1 do
  begin
    ShowMessage(inttostr(TCustomer(myList[i]).Nomer)+' is customer number '+
                IntToStr(TCustomer(myList[i]).Potok)+'  '+
                datetostr(TCustomer(mylist[i]).Vremya));
  end;
end;
 
//----------------------------------------------------------------------------
// Конструктор формы
// --------------------------------------------------------------------------
procedure TForm1.FormCreate(Sented: TObject);
var
 
begin
if z=4 then
  Begin
   if mylist.Count > 0 then
    begin
     myList.Delete(0);
    end;
  end
 else
  begin
   w:=w+1;
   myList.Add(TCustomer.Create(w,z,time));
  end;
  
end;
//-------------------------------------------
 //гаммо распределение а<1
procedure TForm1.gamma1;
 var c:integer;
     b,p,y,x,a,u1,u2:Extended;
begin
 a:=strtofloat(alfa.text);
 b:= (2.71+a)/2.71;
 c:=1;
 repeat
  randomize;
  u1:=random;
  p:=b*u1;
  if p>1  then
   begin
    y:=Exp((1/a)*Ln(p));
    u2:=random;
    if u2<=(Exp(-y*Ln(2.71))) then
     begin
      x:=y;
      c:=2;
      label8.Caption:=('x a<1 gamma   '+FloatToStr(x));
     end;
   end
   else
    begin
     y:=-Ln((b-p)/a);
       u2:=random;
       y:=abs(y);
       if u2<=-1*(Power(y,(a-1))) then
        begin
         x:=y;
         c:=2;
         label8.Caption:=('x a<1 gamma   '+FloatToStr(x));
        end;
    end;
until c=2;
z:=1;
FormCreate(TCustomer.Create);
 
Timer1.Interval:=Trunc(x*1000);
 
end;
//-----------------------------------------
//Гаммо распределение а=1
 
procedure TForm1.gamma2;
var a,u1,x,betta1:real;
 
begin
randomize;
u1:=random;
betta1:=strtofloat(betta.text);
x:=-betta1*ln(u1);
label8.Caption:=('x a=1 gamma   '+FloatToStr(x));
z:=1;
[COLOR="Red"]FormCreate;[/COLOR]
Timer1.Interval:=Trunc(x*1000);
end;
 
 
//-----------------------------------------
//Гаммо распределение а>1
procedure TForm1.gamma3;
var alfa1,a,b,q,o,d,u1,u2,v,y,z,w,x:real;
     c:integer;
begin
 randomize;
 alfa1:=strtofloat(alfa.text);
 a:=sqrt(2*alfa1-1);
 b:=alfa1-Ln(4);
 q:=(alfa1+1)/a;
 o:=4.5;
 d:=1+Ln(o);
 c:=1;
 repeat
 u1:=random;
 u2:=random;
 v:=alfa1*Ln(u1/(1-u1));
 y:=alfa1*(Exp(v*Ln(2.71)));
 z:=Exp(2*Ln(u1))*u2;
 w:=b+q*v-y;
 if w+d-o*z>=0 then
   begin
   x:=y;
   c:=2;
   label8.Caption:=('x a>1 gamma   '+FloatToStr(x));
   end
  else
   if w>=Ln(z) then
    begin
     x:=y;
     c:=2;
     label8.Caption:=('x a>1 gamma   '+FloatToStr(x));
    end;
until c=2;
z:=1;
FormCreate;
Timer1.Interval:=Trunc(x*1000);
end;
//-------------------------------------
//распределение Вейбула
procedure TForm1.Veibula;
var alfa1,betta1,U,x:real;
begin
randomize;
alfa1:=strtofloat(alfa.text);
betta1:=strtofloat(betta.text);
u:=random;
x:=betta1*Exp((1/alfa1)*Ln(-Ln(u)));
label7.Caption:=('x Veibula   '+FloatToStr(x));
z:=2;
FormCreate;
Timer2.Interval:=Trunc(x*1000);
end;
 
//-------------------------------------
//Лог-нормальное распреденение
procedure TForm1.LogNorm;
 Var u1,u2,x,y:real;
     i:integer;
begin
 randomize;
 u2:=0;
 for i:=1 to 12 do
  begin
  u1:=random;
  u2:=u2+u1;
  end;
 y:=u2-6;
 x:=Power(2.71 , y);
 label6.Caption:=('x = LogNorm  '+FloatToStr(x));
 z:=3;
 FormCreate;
 Timer3.Interval:=Trunc(x*1000);
end;
 
//-------------------------------------
//Запуск таймеров
procedure TForm1.Button1Click(Sender: TObject);
begin
w:=0;
Timer1.Enabled:=True;
Timer2.Enabled:=True;
Timer3.Enabled:=True;
myList := TList.Create;
end;
// -----------------------------------------------
//Таймер Гаммо распределения
procedure TForm1.Timer1Timer(Sender: TObject);
 var a:real;
begin
 Timer1.Enabled:=false;
 a:=strtofloat(alfa.text);
 if a<1 then
  gamma1;
 if a=1 then
  gamma2;
 if a>1 then
  gamma3;
 Timer1.Enabled:=True;
end;
//----------------------------------------------
//Остановка Таймеров
procedure TForm1.Button2Click(Sender: TObject);
begin
Timer1.Enabled:=false;
Timer3.Interval:=1;
Timer2.Enabled:=false;
Timer3.Interval:=2;
Timer3.Enabled:=false;
Timer3.Interval:=3;
ShowListContents;
end;
//------------------------------------------------
//Таймер Вейбула
procedure TForm1.Timer2Timer(Sender: TObject);
begin
 Timer1.Enabled:=false;
 Veibula;
 Timer1.Enabled:=True;
end;
//--------------------------------------------------
//Таймер Лог-нормального распределения
procedure TForm1.Timer3Timer(Sender: TObject);
begin
 Timer1.Enabled:=false;
 LogNorm;
 Timer1.Enabled:=True;
end;
 
end.
Как правильно вызвать процедуру конструктора procedure TForm1.FormCreate(Sented: TObject);? В процедере procedure TForm1.gamma1;?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.12.2014, 13:54
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Обращение к конструктору нового класса (Delphi):

Обращение к свойству потомка класса в массиве - Delphi
Ребят помогите не могу понять как мне обратиться к свойству класса потомка procedure TForm1.AddObject; var Figure :array of...

Обращение к методу из одного класса в другом - Delphi
Подскажите, есть ли какая-нибудь возможность обратиться из одного класса в другой, не наследуя при этом полностью этот класс...т.е у меня...

Передача конструктору класса ссылки на QGraphicView - C++ Qt
В свое время для реализации графических методов классов в C++ Builder и Delphi Методу передавалась ссылка на объект TCanvas - канвы ...

Могут ли параметры передаваться конструктору наследуемого класса? - C#
на некоторые вопросы не могу ответить. очень прошу помочь если хотя бы 1 ответ на вопрос знаете 6. Могут ли параметры передаваться...

Обратиться к конструктору дочернего класса в интерфейсе родительского - C++ WinAPI
Есть заголовочный файл FirstDlg.h с интерфейсом класса FirstDlg унаследованного от CDialog; Хочу в интерфейсе класса(заголовочном файле)...

Передать инициализированный std::vector конструктору базового класса - C++
В общем появилась одна проблема. Никак не пойму как можно сделать. В общем дело такое: 1) Есть класс Coord, который содержит координаты. ...

1
FIL
Модератор
3375 / 2513 / 478
Регистрация: 19.09.2012
Сообщений: 7,845
01.12.2014, 14:15 #2
Delphi
1
FormCreate(nil);
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.12.2014, 14:15
Привет! Вот еще темы с ответами:

Создать объект, зная только имя класса и параметры, передаваемые конструктору - Java SE
Сабж. Допустим дано String className=&quot;PC&quot;; int p1=1; int p2=2; int p3=3; Как создать объект, аналогичный данномуPC obj = new...

Не получается задать вводимый в программе массив, как аргумент конструктору класса - C#
Это мой класс обработки одномерного массива: namespace SharpConsoleApplication7 { class ArrAnalizator { public...

Выбор типа переменной-члена класса в зависимости от параметров передаваемых конструктору - C++
Здравствуйте форумчане! Ответьте пожалуйста на вопрос - возможно ли такое на С++ и если да, то как это реализовать? Имеется класс, в нём...

Использование объекта одного класса при создании нового класса - C++
Добрый вечер. У меня такая проблема. Есть готовый класс L2 - список, на его основе нужно создать дек. Я поступил так: в приватной части...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru