En este tema, aprenderemos cómo manejar errores y depurar aplicaciones en Delphi/Object Pascal. La capacidad de identificar y corregir errores es crucial para cualquier programador, y Delphi proporciona herramientas y técnicas robustas para facilitar este proceso.

  1. Introducción al Manejo de Errores

Conceptos Clave

  • Errores en Tiempo de Compilación: Errores detectados por el compilador antes de ejecutar el programa.
  • Errores en Tiempo de Ejecución: Errores que ocurren mientras el programa está en ejecución.
  • Excepciones: Mecanismo para manejar errores en tiempo de ejecución de manera controlada.

Tipos de Errores

  • Sintácticos: Errores en la estructura del código.
  • Lógicos: Errores en la lógica del programa que producen resultados incorrectos.
  • De Ejecución: Errores que ocurren durante la ejecución del programa, como divisiones por cero o acceso a memoria no válida.

  1. Manejo de Excepciones

Sintaxis Básica

Delphi utiliza bloques try...except y try...finally para manejar excepciones.

Bloque try...except

try
  // Código que puede generar una excepción
except
  on E: Exception do
    ShowMessage('Ocurrió un error: ' + E.Message);
end;

Bloque try...finally

try
  // Código que puede generar una excepción
finally
  // Código que siempre se ejecuta, ocurra o no una excepción
end;

Ejemplo Práctico

procedure TForm1.Button1Click(Sender: TObject);
var
  num, denom, result: Integer;
begin
  num := 10;
  denom := 0; // Esto causará una división por cero
  try
    result := num div denom;
    ShowMessage('Resultado: ' + IntToStr(result));
  except
    on E: EDivByZero do
      ShowMessage('Error: División por cero.');
  end;
end;

Explicación del Código

  • try: Inicia un bloque de código que puede generar una excepción.
  • except: Captura y maneja la excepción.
  • on E: EDivByZero do: Especifica el tipo de excepción a manejar (en este caso, división por cero).

  1. Depuración de Aplicaciones

Herramientas de Depuración en Delphi

  • Puntos de Interrupción (Breakpoints): Permiten pausar la ejecución del programa en una línea específica.
  • Inspección de Variables (Watch): Permite monitorear el valor de las variables durante la ejecución.
  • Ejecución Paso a Paso (Step Over, Step Into, Step Out): Permite ejecutar el programa línea por línea para observar el flujo de ejecución.

Uso de Puntos de Interrupción

  1. Haga clic en el margen izquierdo del editor de código para establecer un punto de interrupción.
  2. Ejecute el programa en modo de depuración (F9).
  3. El programa se detendrá en el punto de interrupción, permitiendo inspeccionar el estado del programa.

Ejemplo de Depuración

procedure TForm1.Button2Click(Sender: TObject);
var
  i, sum: Integer;
begin
  sum := 0;
  for i := 1 to 10 do
  begin
    sum := sum + i; // Establezca un punto de interrupción aquí
  end;
  ShowMessage('Suma: ' + IntToStr(sum));
end;

Explicación del Proceso de Depuración

  • Establecer un Punto de Interrupción: En la línea sum := sum + i;.
  • Ejecutar en Modo de Depuración: Presione F9.
  • Inspeccionar Variables: Verifique el valor de sum y i en cada iteración del bucle.

  1. Ejercicios Prácticos

Ejercicio 1: Manejo de Excepciones

Escriba un programa que solicite al usuario ingresar dos números y realice una división. Maneje la excepción de división por cero.

Solución

procedure TForm1.Button3Click(Sender: TObject);
var
  num, denom, result: Integer;
begin
  num := StrToInt(InputBox('Entrada', 'Ingrese el numerador:', ''));
  denom := StrToInt(InputBox('Entrada', 'Ingrese el denominador:', ''));
  try
    result := num div denom;
    ShowMessage('Resultado: ' + IntToStr(result));
  except
    on E: EDivByZero do
      ShowMessage('Error: División por cero.');
  end;
end;

Ejercicio 2: Depuración de Código

Depure el siguiente código para encontrar y corregir el error lógico.

Código a Depurar

procedure TForm1.Button4Click(Sender: TObject);
var
  i, sum: Integer;
begin
  sum := 0;
  for i := 1 to 10 do
  begin
    sum := sum - i; // Error lógico: debería ser sum + i
  end;
  ShowMessage('Suma: ' + IntToStr(sum));
end;

Solución

procedure TForm1.Button4Click(Sender: TObject);
var
  i, sum: Integer;
begin
  sum := 0;
  for i := 1 to 10 do
  begin
    sum := sum + i; // Corrección: sum + i
  end;
  ShowMessage('Suma: ' + IntToStr(sum));
end;

  1. Conclusión

En esta sección, hemos aprendido cómo manejar errores y depurar aplicaciones en Delphi. Hemos cubierto el uso de bloques try...except y try...finally para manejar excepciones, así como las herramientas de depuración disponibles en Delphi. La práctica de estos conceptos es esencial para desarrollar aplicaciones robustas y libres de errores.

En el próximo tema, exploraremos las estructuras de datos como arreglos y cadenas, que son fundamentales para la manipulación de datos en Delphi.

Curso de Programación en Delphi/Object Pascal

Módulo 1: Introducción a Delphi/Object Pascal

Módulo 2: Estructuras de Control y Procedimientos

Módulo 3: Trabajando con Datos

Módulo 4: Programación Orientada a Objetos

Módulo 5: Características Avanzadas de Delphi

Módulo 6: Desarrollo de GUI con VCL y FMX

Módulo 7: Desarrollo Web y Móvil

Módulo 8: Mejores Prácticas y Patrones de Diseño

Módulo 9: Proyecto Final

© Copyright 2024. Todos los derechos reservados