Ir ao conteúdo
  • Cadastre-se
Whillis

Delphi Problema em calcular média no Lazarus

Recommended Posts

unit Unit1;

{$mode delphi}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;

{ TForm1 }

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Edit5: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Label6: TLabel;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    RadioButton3: TRadioButton;
    RadioButton4: TRadioButton;
    procedure Button1Click(Sender: TObject);
    procedure Edit5Change(Sender: TObject);
    procedure RadioButton1Change(Sender: TObject);
  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.RadioButton1Change(Sender: TObject);
begin

end;

procedure TForm1.Button1Click(Sender: TObject);
var
  soma:real;
  vezes:real;
begin
//Média Aritmética Simples------------------------------------------------------

  soma:=(strtofloat(edit1.text) +
   strtofloat(edit2.text) + strtofloat(edit3.text) +
   strtofloat(edit4.text));

   If (radiobutton1.checked=true) then
   begin
   Edit5.text:=(soma)/4;
  end;

//Média Geométrica -------------------------------------------------------------

  vezes:=(strtofloat(edit1.text) *
   strtofloat(edit2.text) * strtofloat(edit3.text) *
   strtofloat(edit4.text));

   If (radiobutton3.checked=true) then
  begin
   Edit5.text:='sqrt(vezes)';
  end;

end;

procedure TForm1.Edit5Change(Sender: TObject);
begin

end;

end.

 Não consigo por as contas da média dentro de variaveis para adicionar outras divisões/ raizes ou multiplicações. Estou com um erro pra pegar o resultado dessas médias simples e geométrica, esta dando um erro de (Error:Incompatible type for arg no. 1:Got "Real", expected "TTranslateString")  e não sei com consertar o erro esta nessas linhas: 

procedure TForm1.Button1Click(Sender: TObject);
var
  soma:real;
  vezes:real;
begin
//Média Aritmética Simples------------------------------------------------------

  soma:=(strtofloat(edit1.text) +
   strtofloat(edit2.text) + strtofloat(edit3.text) +
   strtofloat(edit4.text));

   If (radiobutton1.checked=true) then
   begin
   Edit5.text:=(soma)/4;
  end;

//Média Geométrica -------------------------------------------------------------

  vezes:=(strtofloat(edit1.text) *
   strtofloat(edit2.text) * strtofloat(edit3.text) *
   strtofloat(edit4.text));

   If (radiobutton3.checked=true) then
  begin
   Edit5.text:='sqrt(vezes)';
  end;

end;   

 

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

O problema é que você está tentando jogar um valor numérico (real) pra um campo texto (edit5.text). você tem que converter o valor numérico pra texto antes de fazer esta atribuição. Então no seu código faça:

 

//incorreto
//Edit5.text:=(soma)/4;

//correto
Edit5.text:= FloatToStr((soma)/4);

-------------------------------------
//incorreto 
//Edit5.text:='sqrt(vezes)';

//correto
 Edit5.text:= FloatToStr(sqrt(vezes));

 

  • Curtir 1
  • Obrigado 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
3 horas atrás, FBO_COUTINHO disse:

O problema é que você está tentando jogar um valor numérico (real) pra um campo texto (edit5.text). você tem que converter o valor numérico pra texto antes de fazer esta atribuição. Então no seu código faça:

 


//incorreto
//Edit5.text:=(soma)/4;

//correto
Edit5.text:= FloatToStr((soma)/4);

-------------------------------------
//incorreto 
//Edit5.text:='sqrt(vezes)';

//correto
 Edit5.text:= FloatToStr(sqrt(vezes));

 

 Muito obrigado! era isso mesmo

  • Curtir 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×