entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Manejando Variables en Delphi

Buenas Tardes,

A lo mejor alguien con conocimientos en Delphi me pudiera dar una ayudita. Estoy comenzando a programar en Delphi, y aun ando aprendiendo bien sobre variables. Estoy tratando de segun el valor de una variable, ejecutar una tarea (?).

Seria, si la variable fuera "1" o "2" Ejecutaria lo siguiente. Es solo que no se como declara en caso de que sea 1 o dos.

Gracias

procedure TForm1.IgualClick(Sender: TObject);
  var
  Orden: Integer;
  Begin 
  Orden := (1,2);
  B := StrToInt(Edit1.Text);
   Case orden of
     1 : Sumar;
     2 : Restar;
end;

3 Respuestas

2votos

ArielRomero Puntos180

No se entiende bien tu pregunta ni cual es tu problema, ademas esta en la categoria consolas y por lo que veo en tu código estas usando un Form. Tendrías que explicar un poco mas que es lo que necesitar lograr, por lo pronto la asignación de variables es con := de todas formas agrego tu mismo código modificado de acuerdo a lo que entiendo que necesitas hacer .

procedure TForm1.IgualClick(Sender: TObject);
  var
  Orden: Integer;
  Begin 
  Orden := StrToInt(Edit1.Text);
   Case orden of
     1 : Sumar;
     2 : Restar;
end;

La validación del valor ingresado en el cuadro de texto debería hacerse antes del case o directamente en algún evento propio del cuadro de texto como por ejemplo el onKeyPress.

Saludos y suerte..

0voto

raul_danglade comentado

Hola,

Estoy tratando de desarrollar una calculadora. Por ejemplo:

"IgualClick" Ese es el boton del "igual" en el cual lee si la orden es sumar o restar. "B" viene siendo el segundo valor introducido por el usuario. Estoy tratando de decrifrar si es "1" o "2"

Voy a copiar mi codigo entero, a lo mejor ayuda mas. Gracias

unit Unit1;

interface

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

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Mas: TButton;
    Menos: TButton;
    Uno: TButton;
    Dos: TButton;
    Tres: TButton;
    Cuatro: TButton;
    Igual: TButton;
    Button1: TButton;
    procedure UnoClick(Sender: TObject);
    procedure DosClick(Sender: TObject);
    procedure TresClick(Sender: TObject);
    procedure CuatroClick(Sender: TObject);
    procedure MasClick(Sender: TObject);
    procedure IgualClick(Sender: TObject);
    procedure MenosClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  A: integer;
  B: integer;
  orden: integer;

implementation

{$R *.dfm}

// Procedimientos tipo Suma, Resta
procedure Sumar;
begin
  Form1.Edit1.Text := IntToStr(A + B);
end;

procedure Restar;
begin
  Form1.Edit1.Text := IntToStr(A - B);
  end;

// Botones 1 al 4
procedure TForm1.UnoClick(Sender: TObject);
begin
  Edit1.Text := Edit1.Text + '1';
end;

procedure TForm1.DosClick(Sender: TObject);
begin
  Edit1.Text := Edit1.Text + '2';
end;

procedure TForm1.TresClick(Sender: TObject);
begin
  Edit1.Text := Edit1.Text + '3';
end;

procedure TForm1.CuatroClick(Sender: TObject);
begin
  Edit1.Text := Edit1.Text + '4';
end;

// Botones sumar o restar

procedure TForm1.MasClick(Sender: TObject);
begin
  Orden := StrToInt('1');
  A := StrToInt(Edit1.Text);
  Edit1.Clear;
end;

procedure TForm1.MenosClick(Sender: TObject);
begin
  Orden := StrToInt('2');
  A := StrToInt(Edit1.Text);
  Edit1.Clear;
end;

procedure TForm1.IgualClick(Sender: TObject);
begin

  Orden := StrToInt(1 or 2);
  B := StrToInt(Edit1.Text);
   Case orden of
     1 : Sumar;
     2 : Restar;
end;
end;
end.

1voto

gonnotda Puntos770

Tiene pinta de ser algo de trabajo de clase que quieres que te resolvamos, pero la pregunta básica la tienes respuesta en tu código:

Case orden of
  1 : Sumar;
  2 : Restar;
end;

La gracia está en que debes asignar a la variable ORDEN el valor correcto antes de llegar al CASE.

1voto

Armando Puntos160

Hola les envio esta otra posible solucion que permite resolver la calculadora. En ella derecciono todos los eventos onClick de los botones a uno solo el del "Boton_0"

unit Calculadora;

interface

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

type
  TForm1 = class(TForm)
    Boton_0: TButton;
    Boton_3: TButton;
    Boton_1: TButton;
    Boton_2: TButton;
    Boton_4: TButton;
    Boton_Menor: TButton;
    Boton_Mas: TButton;
    EditResultado: TEdit;
    BotonIgual: TButton;
    Button1: TButton;
    procedure Boton_0Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  gValor1 : Real;
  gValor2 : Real;
  gOperacion : String;

implementation

{$R *.dfm}

procedure TForm1.Boton_0Click(Sender: TObject);
 Var
    Resutado : Real;
    vValor   : String;
begin

   If TButton(Sender).Caption = '+' Then Begin gValor1 := StrToFloat(EditResultado.Text); gOperacion := '+'; EditResultado.Text := '';End;
   If TButton(Sender).Caption = '-' Then Begin gValor1 := StrToFloat(EditResultado.Text); gOperacion := '-'; EditResultado.Text := '';End;
   If TButton(Sender).Caption = '=' Then
   Begin
      gValor2 := StrToFloat(EditResultado.Text);
      if gOperacion = '+' then EditResultado.Text := FloatToStr(gValor1 + gValor2);
      if gOperacion = '-' then EditResultado.Text := FloatToStr(gValor1 - gValor2);
      Exit;
   End;

   vValor := Trim(TButton(Sender).Caption);
   If Not(vValor = '+') And
      Not(vValor = '-') And
      Not(vValor = '/') And
      Not(vValor = '=') Then EditResultado.Text := EditResultado.Text + TButton(Sender).Caption;

end;

procedure TForm1.Button1Click(Sender: TObject);
begin
   gValor1    := 0.0;
   gValor2    := 0.0;
   gOperacion := '';
   EditResultado.Text := '';
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
   gValor1    := 0.0;
   gValor2    := 0.0;
   gOperacion := '';
   EditResultado.Text := '';
end;

end.

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


Actividad Reciente

...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta