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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.10.2008, 02:49
Vigor Vigor вне форума
Прохожий
 
Регистрация: 20.11.2007
Сообщения: 12
Репутация: 10
По умолчанию Not enough actual parameters

Всем привет, вот есть код, делфи ругается на достаток параметров для процедуры Button2Click, но все неоюходимое я вроде описал, знающие люди подскажите
Код:
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
unit Unit1;
 
interface
 
uses
     Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, ExtCtrls,StdCtrls,Math,Series,
  ValEdit, jpeg, TeEngine, TeeProcs, Chart;
 
type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Edit6: TEdit;
    Edit7: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    Label7: TLabel;
    Button1: TButton;
    Chart1: TChart;
    Series1: TLineSeries;
    Label8: TLabel;
    Label9: TLabel;
    Edit8: TEdit;
    Edit9: TEdit;
    Edit10: TEdit;
    Label10: TLabel;
    Label11: TLabel;
    Label12: TLabel;
    Edit11: TEdit;
    Edit12: TEdit;
    Button2: TButton;
    Edit13: TEdit;
    Edit14: TEdit;
    Label13: TLabel;
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
        aY,pY,cY,aX,aP,aC: array of real;
function funY(x: Real): Real;
 
 
{ Private declarations }
  public
    { Public declarations }
  end;
 
var
  Form1: TForm1;
Hx,Hy,y,H,a0,a1,a2,a3,a4,Ymax,Ymin,Xmax,Xmin,x,Int:real;
 
implementation
 
{$R *.dfm}
  function TForm1.funY(x: Real): Real;
begin
 Result:=a0+a1*x+a2*power(x,2)+a3*power(x,3)+ a4*power(x,4)
  end;
procedure TForm1.FormCreate(Sender: TObject);
begin
try
 
    Xmax:=StrToFloat(Edit7.Text);
    Xmin:=StrToFloat(Edit6.Text);
 
    Ymax:=StrToFloat(Edit11.Text);
    Ymin:=StrToFloat(Edit12.Text);
 
    Hx:=StrToFloat(Edit8.Text);
    Hy:=StrToFloat(Edit9.Text);
    H:=StrToFloat(Edit10.Text);
except
    MessageBeep(Error);
    MessageDlg('Неверно заданы параметры', mtError, [mbOk], 0);
  end;
  Chart1.BottomAxis.Minimum:=Xmin;
  Chart1.BottomAxis.Maximum:=Xmax;
 
  Chart1.LeftAxis.Minimum:=Ymin;
  Chart1.LeftAxis.Maximum:=Ymax;
 
  Chart1.BottomAxis.Increment:=Hx;
  Chart1.LeftAxis.Increment:=Hy;
 
  Form1.Button1Click(Sender);
end;
 
 procedure TForm1.Button1Click(Sender: TObject);
begin
  Series1.Clear;
  x:=Xmin;
  a0:=StrToFloat(Edit1.Text);
  a1:=StrToFloat(Edit2.Text);
  a2:=StrToFloat(Edit3.Text);
  a3:=StrToFloat(Edit4.Text);
  a4:=StrToFloat(Edit5.Text);
    While x<=Xmax do
  begin
  y:=(a0+a1*x+a2*power(x,2)+a3*power(x,3)+ a4*power(x,4));
  Series1.AddXY(x, y, '', clTeeColor);
  x:=x+h;
end;
end;
 
procedure TForm1.Button2Click(Sender: TObject);
function SUM(const Data: array of Real): real;
function SUMpY(const Data: array of Real): real;
function SUMcY(const Data: array of Real): real;
 
 Var
 n,i:integer;
 h,S,T,U:real;
begin
ShowMessage ('введите пожалуйста в поле ввода n(n=(Xmax-Xmin)/h)');
x:=Xmin;
n:=StrToInt(Edit14.Text);
 
For i:=1 to n do
begin
aX[i]:= x + (i-1)*h;
aY[i]:= funY(aX[i]);
end;
x:=Xmin;
For i:=1 to n do
begin
aP[i]:= x + i*h;
pY[i]:= funY(aP[i]);
end;
x:=Xmin;
For i:=1 to n do
begin
aC[i]:= x + (i-1)*h + h/2;
cY[i]:= funY(aC[i]) ;
end;
S:=0;
For i:=1 to n do begin
S:=S+aY[i];
SUM:=S;
end;
T:=0;
For i:=1 to n do begin
T:=T+pY[i];
SUMpY:=T;
end;
U:=0;
For i:=1 to n do begin
U:=U+cY[i];
SUMcY:=U;
end;
Int:=1/6*(SUM + SUMpY + 4*SUMcY)*h; \\ <font color="MediumTurquoise">вот тут ругается  Not enough actual parameters</font>
Edit13.Text:=FloatToStr(Int);
end;
end.

заранее спасибо всем ответившим.
Ответить с цитированием
  #2  
Старый 09.10.2008, 05:11
Аватар для Zander_driver
Zander_driver Zander_driver вне форума
Прохожий
 
Регистрация: 07.03.2008
Сообщения: 29
Репутация: 10
По умолчанию

А зачем у тебя SUM,SUMpY,SUMcY обьявлены как функции, да еще с параметрами, если ты с ними как с переменными обращаешься?
Мне кажется дело в этом.
Ответить с цитированием
  #3  
Старый 09.10.2008, 12:34
Grunch Grunch вне форума
Новичок
 
Регистрация: 08.04.2008
Адрес: Краснодар
Сообщения: 52
Репутация: 10
По умолчанию

Видимо функции SUM,SUMpY,SUMcY объявлены правильно. Используются они неправильно. Vigor, это же функции с параметрами! Судя по всему строчка
Код:
1
Int:=1/6*(SUM + SUMpY + 4*SUMcY)*h;
должна выглядеть так:
Код:
1
Int:=1/6*(SUM(aY) + SUMpY(pY) + 4*SUMcY(cY))*h;
Ответить с цитированием
  #4  
Старый 09.10.2008, 15:51
Vigor Vigor вне форума
Прохожий
 
Регистрация: 20.11.2007
Сообщения: 12
Репутация: 10
По умолчанию

Да с этим разобрался, спасибо. Теперь при нажатии на кнопку вывода результата в Edit13 выдает вот что:

Debugger Exception Notification

Project Project1.exe raised exception class EAccess Violation with message 'Access violation at address 0048B5D3 in module ' Project1.exe.' Write of address 00000008'. Process stopped.Use Step or Run to continue.

Я жму дальше Run, выходит такая табличка:

Project1
Access violation at address 0048B5D3 in module 'Project1.exe'. Write of address 00000008.

Что с этим делать понятия не имею
Ответить с цитированием
  #5  
Старый 09.10.2008, 17:17
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,096
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Скорее всего, обращение к несозданному объекту.
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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