Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.11.2016, 08:35   #21
lichking
Пользователь
 
Регистрация: 31.10.2016
Сообщений: 54
По умолчанию

Цитата:
Сообщение от Replicant Посмотреть сообщение
Естественно, Вы описали эту функцию с 4-ю обязательными аргументами, в то время как передаете 1. А по факту, судя по тому, что Вы пытаетесь сделать в этой функции этих аргумента должно быть 3.
unit Unit3;

interface

uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms,math, Vcl.Dialogs, Vcl.StdCtrls;
type
TSW = class(TObject)
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
function divia (var D,D2,D3:Extended):extended;
{ Public declarations }
end;
var
a: string;


type
TForm3 = class(TForm)
Label1: TLabel;
Button1: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form3: TForm3;
D,D2,D3,F3:extended;
s:string;



implementation

{$R *.dfm}

procedure TForm3.Button1Click(Sender: TObject);

begin
D:=strtofloat(form3.Edit1.Text);
D2:=strtofloat(form3.Edit1.Text);
D3:=strtofloat(form3.Edit1.Text);
Label1.Caption:=floattostr(F3);
F3:=tsw.divia(D,D2,D3);
end;

procedure TForm3.FormCreate(Sender: TObject);
begin

end;

{ TSW }


function TSW.divia(var D, D2, D3: Extended): extended;


begin
divia:=POWER(D,2)-4*D2*D3;

end;

procedure TSW.FormCreate(Sender: TObject);


begin

end;


end.
непомогло F3:=tsw.divia(D,D2,D3);

Последний раз редактировалось lichking; 03.11.2016 в 08:37.
lichking вне форума Ответить с цитированием
Старый 03.11.2016, 08:50   #22
Replicant
Форумчанин
 
Аватар для Replicant
 
Регистрация: 17.08.2009
Сообщений: 139
По умолчанию

Я большего винегрета в жизни не видел.
Код:
unit Unit3;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, math;

type
  TForm3 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  function divia(D, D2, D3: Extended): extended;

var
  Form3: TForm3;

implementation

{$R *.dfm}

function divia(D, D2, D3: Extended): extended;
begin
  Result:=POWER(D,2)-4*D2*D3;
end;

procedure TForm3.Button1Click(Sender: TObject);
var
  D,D2,D3:extended;
begin
  D:=strtofloat(form3.Edit1.Text);
  D2:=strtofloat(form3.Edit1.Text);
  D3:=strtofloat(form3.Edit1.Text);
  Label1.Caption:=floattostr(divia(D,D2,D3));
end;

end.
Replicant вне форума Ответить с цитированием
Старый 03.11.2016, 08:55   #23
lichking
Пользователь
 
Регистрация: 31.10.2016
Сообщений: 54
По умолчанию

Цитата:
Сообщение от Replicant Посмотреть сообщение
Я большего винегрета в жизни не видел.
Код:
unit Unit3;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, math;

type
  TForm3 = class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Button1: TButton;
    Label1: TLabel;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

  function divia(D, D2, D3: Extended): extended;

var
  Form3: TForm3;

implementation

{$R *.dfm}

function divia(D, D2, D3: Extended): extended;
begin
  Result:=POWER(D,2)-4*D2*D3;
end;

procedure TForm3.Button1Click(Sender: TObject);
var
  D,D2,D3:extended;
begin
  D:=strtofloat(form3.Edit1.Text);
  D2:=strtofloat(form3.Edit1.Text);
  D3:=strtofloat(form3.Edit1.Text);
  Label1.Caption:=floattostr(divia(D,D2,D3));
end;

end.
вот здесь вы абсолютно правы и я бы не стал городить такой винегрет который нагородил если бы не было задачи решить с помощью другого класса
lichking вне форума Ответить с цитированием
Старый 03.11.2016, 09:24   #24
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

класс для вычисления
Код:
TDivia =class(TObject)
private
  Fd1, Fd2, Fd3: extended;
  procedure SetD1(Aval: extended;
  procedure SetD2(Aval: extended;
  procedure SetD3(Aval: extended;
  function GetDivia: extended;
public // мы можем из других объектов/(классов/процедур/...
  property d1: extended write setd1; // заполнить(задать){write}(записать)  значения D1
  property d2: extended write setd2; // .... D2
  property d3: extended write setd3; // .... D3 
  property divia: extended read GetDivia; //и получить(узнать){read}(прочитать) значение "нашей" функции
end;  

procedure TDivia.setD1(Aval: extended);
begin
  FD1:=Aval;
  ....
end;

... // аналогично  SetD2, SetD3

function TDivia.GetDivia: extended;
begin
  result:=Power(FD1,2) -4*FD2*FD3;
end;
и его использование
Код:
rd:=TDivia.Create;//создать объект соответствующего класса
rd.D1:=...  // задать значения аргументов функции
rd.D2:=...
rd.D3:=...
otvet:=rd.Divia; // и получить значение функции
причем это не обязательно должно быть именно так подряд.

НАПРИМЕР ТАК
Код:
TForm1 =class(TForm)
...
private
  rd: TDivia; //никаких глобальных переменных. Используем поле объекта(нашей СОЗДАННОЙ формы)
end;
при создании формы TForm.OnCreate
Код:
TForm1.formCreate(Sender: TObject);
begin
  rd:=TDivia.Create; // теперь мы можем этим пользоваться
end;
три разных обработчика события TEdit.OnChange для трех полей ввода значений D1, D2, D3.

в каждом из них пишем ровно ДВЕ строчки.
Код:
// заполняем НУЖНОЕ(соответствующее)  поля ОБЪЕКТА вычислений
rd.DX:=strtofloat((sender as TEdit).text); //X это нужный нам D1 D2 D3 (соответствующий данному TEdit).
// все прочие поля остаются теми же самыми что были при вводе в соответствующие поля 
EditRez:=floattostr(rd.Divia); // и получаем результат
P.S. конечно сейчас скажут что можно обойтись и одним обработчиком + (sender as TEdit).Tag
Цитата:
три разных обработчика события TEdit.OnChange для трех полей ввода значений D1, D2, D3.
НО оставим это на случай когда ТС поймет как пользоваться классами.
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 03.11.2016 в 09:35.
evg_m вне форума Ответить с цитированием
Старый 03.11.2016, 10:09   #25
Replicant
Форумчанин
 
Аватар для Replicant
 
Регистрация: 17.08.2009
Сообщений: 139
По умолчанию

Цитата:
Сообщение от evg_m Посмотреть сообщение
НО оставим это на случай когда ТС поймет как пользоваться классами.
Вряд ли он соберет все это воедино.
Replicant вне форума Ответить с цитированием
Старый 03.11.2016, 10:53   #26
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

и его использование
Код:
Цитата:
Вряд ли он соберет все это воедино.
На этот случай (для начала) есть надеюсь
Цитата:
и его использование
Код:
rd:=TDivia.Create;//создать объект соответствующего класса
rd.D1:=...  // задать значения аргументов функции
rd.D2:=...
rd.D3:=...
otvet:=rd.Divia; // и получить значение функции
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 03.11.2016, 12:39   #27
lichking
Пользователь
 
Регистрация: 31.10.2016
Сообщений: 54
По умолчанию

в класс TW предаются данные из класса form3 обрабатываются в TW и результат передается в form3 я просто должен создать класс для решения квадратного уравнения поэтому пытаюсь понять наладить связь а дальше буду пробовать сам забираться.
lichking вне форума Ответить с цитированием
Старый 03.11.2016, 17:36   #28
lichking
Пользователь
 
Регистрация: 31.10.2016
Сообщений: 54
По умолчанию

все вышло всем спасибо
lichking вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
массивы класов zla9_kolu4ka Общие вопросы C/C++ 3 07.03.2014 09:01
Создание экземпляров класов darkmesser C# (си шарп) 5 20.11.2013 04:59
Наследование класов mixon-21 Общие вопросы C/C++ 0 14.09.2013 23:00
Наследственность класов С++ IGOR199304 Помощь студентам 2 19.10.2011 21:50
Композиция класов fantom_ZET Общие вопросы C/C++ 6 31.10.2010 16:50