Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   Cómo evitar el error al dividir por cero (https://www.clubdelphi.com/foros/showthread.php?t=51264)

nando87dc 11-12-2007 04:48:41

Cómo evitar el error al dividir por cero
 
tengo dos campos de texto donde el usuario ingresa dos valores y al apretar un botón se hace una división y el resultado se imprime en un tercer campo de texto.
El problema es cuando se presiona el botón sin haber ingresado ningún valor o poniendo cero (ya que intenta dividir por 0).

De qué manera puedo preceder a la acción de la división un IF o algún comando para que detecte si los campos están vacios o con 0 y evite que se siga ejecutando?.

Saludos, espero puedan ayudarme.

Fernando del Castillo

dec 11-12-2007 05:09:40

Hola,

Puedes tratar de capturar la excepción correspondiente. A mí se me ocurre esto a bote pronto, pero, agradecería cualquier crítica constructiva al respecto. :)

Código Delphi [-]
  try
    Edit3.Text := IntToStr(
      StrToInt(Edit1.Text)
       div StrToInt(Edit2.Text)
    );
  except
    on E: EConvertError do begin
      ShowMessage(E.Message);
    end;
    on E: EDivByZero do begin
      ShowMessage(E.Message);
    end;
    on E: Exception do begin
      ShowMessage(E.Message);
    end;
  end;

nando87dc 11-12-2007 06:23:57

Me parece muy complejo para copiarlo en todos los botones...
no hay alguna forma de poner un filtro al campo de texto que no deje poner ciertos valores?

dec 11-12-2007 07:27:46

Hola,

Pues... acaso te interese usar "TMaskEdit", o "TSpinEdit"... o ciertos eventos de los "TEdit"...

Neftali [Germán.Estévez] 11-12-2007 10:14:23

Otra opción es:

Código Delphi [-]
  // Coloca esto en un procedimiento y lo llamas al principio de cada botón
  if (StrToIntDef(Edit2.Text), 0) = 0) then begin
    MessageDlg('¡¡¡¡PEDAZO DE CENUTRIO!!!!  Cómo vas a dividir por 0.',
                    mtError, [mbOK], 0);
    Exit;
  end;

egostar 11-12-2007 18:44:59

Cita:

Empezado por Neftali (Mensaje 251723)
Otra opción es

Código Delphi [-]
 
MessageDlg('¡¡¡¡PEDAZO DE CENUTRIO!!!!  Cómo vas a dividir por 0.',mtError, [mbOK], 0);


:D:D:D

Perdón pero no puedo evitar la risa con esa palabrita CENUTRIO.

Salud OS

Neftali [Germán.Estévez] 12-12-2007 10:47:15

Cita:

Empezado por egostar (Mensaje 251833)
...con esa palabrita CENUTRIO.

La verdad es que nunca pensé que estuviera en el Diccionario de la Lengua.:D:D


La franja horaria es GMT +2. Ahora son las 22:46:07.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi