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

Delphi Sources



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

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

Всем привет, вот есть код, делфи ругается на достаток параметров для процедуры Button2Click, но все неоюходимое я вроде описал, знающие люди подскажите
Код:
 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; \\ вот тут ругается  Not enough actual parameters
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, это же функции с параметрами! Судя по всему строчка
Код:
Int:=1/6*(SUM + SUMpY + 4*SUMcY)*h;
должна выглядеть так:
Код:
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,035
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

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


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

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

ВКонтакте   Facebook   Twitter