Ir ao conteúdo
  • Cadastre-se

Declaração de variaveis...


XxBCrazYxX

Posts recomendados

Bom pessoal sou um novato (leigo) na sintaxe Delphi eu como muitos estou tentando aprender por conta propria, e o meu primeiro projeto é o basico construir uma calculadora, bom, assim como o titulo diz o meu problema é a respeito da declaração de variaveis...

Eu gostaria de saber como fazer para um procedure reconhecer a variavei de uma segunda procedure, pois cada edite possui um procedure, logo preciso fazer com que cada procedure armazene um valor para armazenar esse valor preciso colocar uma variavel exemplo:

[B]procedure TForm1.Edit1Change(Sender: TObject);[/B]
[COLOR="Blue"]var[/COLOR]
valor1 : integer;
[B]begin[/B]
valor1 := Edit1.Text;
[B]end;[/B]

[B]end.[/B]

e na procedure 2 a mesma coisa...

[B]procedure TForm1.Edit2Change(Sender: TObject);[/B]
[COLOR="Blue"]var[/COLOR]
valor2 : integer;
[B]begin[/B]
valor2 := Edit2.Text;
[B]end;[/B]

[B]end.[/B]

Mas na procedure resultado (por assim dizer) precisa receber a soma das duas procedures...

procedure TForm1.Edit3Change(Sender: TObject);
var
resultado : integer;
begin
resultado := valor1 + valor2;
Edit3.Text := resultado;
end;

end.

como fazer para a procedure resultado receber as variaveis das procedures edits (que armazena os valores), ou não é dessa forma o correto?

Obs.: no pascal nesse caso teria q ser usada variaveis do tipo global, como isso é feito no Delph?

Link para o comentário
Compartilhar em outros sites

Uma variável real/integer não pode receber diretamente uma string ou o text de um Edit. Deve-se primeiro converter para integer/real para depois utilizar nos cálculos. Pode-se usar StrToInt, StrToFloat ou VAL. Usarei o último.

Coloque depois de implementation um procedure:

procedure Calculo;
var
valor1, valor2, resultado, erro1,erro2: Integer;
begin
Val(Form1.Edit1.Text,valor1,erro1);
Val(Form1.Edit2.Text,valor2,erro2);
if (erro1 = 0) and (erro2=0) then {Se não houve erro}
begin
resultado := valor1+valor2;
Form1.Edit3.Text:=IntToStr(resultado);
end
else
Form1.Edit3.Text:='Erro';
end;

No OnChange do Edit1 e do Edit2:

procedure TForm1.Edit1Change(Sender: TObject);
begin
Calculo;
end;

procedure TForm1.Edit2Change(Sender: TObject);
begin
Calculo;
end;

O Edit3 (resultado) não deverá ter o OnChange, pois quem altera é o próprio programa. A propriedade ReadOnly do Edit3 deve ser True.

Link para o comentário
Compartilhar em outros sites

Eu fiz da forma q você informou, e o calculo foi efetuado corretamente, agora eu imprementei minha calculadora vou te mostrar o codigo e creio q você entenderá o q quero fazer, lembrando sou leigo, e gostaria muito de aprender Delphi, no começo aprender os fundamentos basicos é difícil mas nada que um pouco de perseveransa e ajuda de amigos não deem aquele empurrãozinho pra q eu possa me tornar um bom programador em delph, veja o codigo abaixo!

unit Calculadora;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Menus, ComCtrls;

type
TForm1 = class(TForm)
RadioGroup1: TRadioGroup;
RadioGroup2: TRadioGroup;
RadioGroup3: TRadioGroup;
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
RadioButton4: TRadioButton;
Panel1: TPanel;
procedure Button2Click(Sender: TObject);
procedure CalcWin1Click(Sender: TObject);
procedure Edit1Change(Sender: TObject);
procedure Edit2Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure Calculo;
var
valor1, valor2, resultado, erro1,erro2: Integer;
begin
Val(Form1.Edit1.Text,valor1,erro1);
Val(Form1.Edit2.Text,valor2,erro2);
if (erro1 = 0) and (erro2=0) then {Se não houve erro}
begin
resultado := valor1+valor2;
Form1.Edit3.Text:=IntToStr(resultado);
end
else
Form1.Edit3.Text:='Erro';
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
Edit1.Text := '';
Edit2.Text := '';
Edit3.Text := '';
end;

procedure TForm1.CalcWin1Click(Sender: TObject);
begin
WinExec('calc.exe', sw_show);
end;

procedure TForm1.Edit1Change(Sender: TObject);
begin
Calculo;
end;

procedure TForm1.Edit2Change(Sender: TObject);
begin
Calculo;
end;

end.

Eu gostaria de aprender como fazer a checagem de quando o usuario escolher a opção soma a calculadora executace no botão calcular apenas a soma dos edits 1 e 2, e assim sucessivamente... nesse caso o procedimento de calculo seria no button calcular correto?

Link para o comentário
Compartilhar em outros sites

Não entendi como você fará, mas:


case Form1.RadioGroup1.ItemIndex of
-1: {o que fazer caso nada tenha sido selecionado}
0: {o que fazer caso a 1ª opção tenha sido selecionada}
1: {o que fazer caso a 2ª opção tenha sido selecionada}
2: {o que fazer caso a 3ª opção tenha sido selecionada}
end;

Link para o comentário
Compartilhar em outros sites

eu consegui com um amigo meu.... ele me tiro as duvidas... aqui está o codigo da calculadora completa!



interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Menus, ComCtrls;

type
TForm1 = class(TForm)
RadioGroup1: TRadioGroup;
RadioGroup2: TRadioGroup;
RadioGroup3: TRadioGroup;
Button1: TButton;
Button2: TButton;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
RadioButton1: TRadioButton;
RadioButton2: TRadioButton;
RadioButton3: TRadioButton;
RadioButton4: TRadioButton;
Panel1: TPanel;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Edit1Exit(Sender: TObject);
procedure Edit2Exit(Sender: TObject);
private
{ Private declarations }
public
valor1, valor2, result : real;
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
if RadioButton1.Checked then begin
result := valor1 + valor2;
Edit3.Text := FloatToStr(result);
end
else
if RadioButton2.Checked then begin
if valor1 < valor2 then begin
result := valor2 - valor1;
Edit3.Text := FloatToStr(result);
end
else begin
result := valor1 - valor2;
Edit3.Text := FloatToStr(result);
end;
end
else
if RadioButton3.Checked then begin
result := valor1 * valor2;
Edit3.Text := FloatToStr(result);
end
else
if RadioButton4.Checked then begin
result := valor1 / valor2;
Edit3.Text := FloatToStr(result);
end
else begin
ShowMessage('Informe um tipo de calculo!');
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Edit1.Clear;
Edit2.Clear;
Edit3.Clear;
end;

procedure TForm1.Edit1Exit(Sender: TObject);
begin
valor1 := StrToFloat(Edit1.text);
end;

procedure TForm1.Edit2Exit(Sender: TObject);
begin
valor2 := StrToFloat(Edit2.Text);
end;

End.
unit Calculadora;

E em destaque o que eu queria pegar contigo...

procedure TForm1.Button1Click(Sender: TObject);
begin
if RadioButton1.Checked then begin
result := valor1 + valor2;
Edit3.Text := FloatToStr(result);
end
else
if RadioButton2.Checked then begin
if valor1 < valor2 then begin
result := valor2 - valor1;
Edit3.Text := FloatToStr(result);
end
else begin
result := valor1 - valor2;
Edit3.Text := FloatToStr(result);
end;
end
else
if RadioButton3.Checked then begin
result := valor1 * valor2;
Edit3.Text := FloatToStr(result);
end
else
if RadioButton4.Checked then begin
result := valor1 / valor2;
Edit3.Text := FloatToStr(result);
end
else begin
ShowMessage('Informe um tipo de calculo!');
end;
end;

Brigadão amigo pela ajuda, finalmente consegui minha calculadora, e passei a entender mais sobre a sintaxe Delph agora é se enfiar nas apostilas e ler muitooo!!!

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...

 

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!