Marco Web Center

[an error occurred while processing this directive]

Home: Code Repository: Mastering Delphi 5

Project EXCEP3

Project Structure


EXCEP3.DPR

program Excep3;

uses
  Forms,
  ExcepF in 'ExcepF.pas' {Form1};

{$R *.RES}

begin
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

EXCEPF.PAS

unit ExcepF;

interface

uses
  SysUtils, Windows, Messages, Classes,
  Graphics, Controls, Forms, Dialogs, StdCtrls;
type
  TForm1 = class(TForm)
    BtnWrong: TButton;
    BtnTryFinally: TButton;
    BtnTryTry: TButton;
    procedure BtnWrongClick(Sender: TObject);
    procedure BtnTryFinallyClick(Sender: TObject);
    procedure BtnTryTryClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.BtnWrongClick(Sender: TObject);
var
  I, J: Integer;
begin
  Screen.Cursor := crHourglass;
  J := 0;
  // long (and wrong) computation...
  for I := 1000 downto 0 do
    J := J + J div I;
  MessageDlg ('Total: ' + IntToStr (J),
    mtInformation, [mbOK], 0);
  Screen.Cursor := crDefault;
end;

procedure TForm1.BtnTryFinallyClick(Sender: TObject);
var
  I, J: Integer;
begin
  Screen.Cursor := crHourglass;
  J := 0;
  try
    // long (and wrong) computation...
    for I := 1000 downto 0 do
      J := J + J div I;
    MessageDlg ('Total: ' + IntToStr (J),
      mtInformation, [mbOK], 0);
  finally
    Screen.Cursor := crDefault;
  end;
end;

procedure TForm1.BtnTryTryClick(Sender: TObject);
var
  I, J: Integer;
begin
  Screen.Cursor := crHourglass;
  J := 0;
  try try
    // long (and wrong) computation...
    for I := 1000 downto 0 do
      J := J + J div I;
    MessageDlg ('Total: ' + IntToStr (J),
      mtInformation, [mbOK], 0);
  finally
    Screen.Cursor := crDefault;
  end;
  except
    on E: EDivByZero do
    begin
      // re-raise the exception with a new message
      raise Exception.Create ('Error in Algorithm');
    end;
  end;
end;

end.

EXCEPF.DFM

object Form1: TForm1
  Left = 214
  Top = 125
  Width = 487
  Height = 126
  ActiveControl = BtnWrong
  Caption = 'Exceptions test'
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'MS Sans Serif'
  Font.Style = []
  OldCreateOrder = True
  PixelsPerInch = 96
  TextHeight = 13
  object BtnWrong: TButton
    Left = 40
    Top = 25
    Width = 113
    Height = 49
    Caption = 'Wrong'
    TabOrder = 0
    OnClick = BtnWrongClick
  end
  object BtnTryFinally: TButton
    Left = 184
    Top = 25
    Width = 113
    Height = 49
    Caption = 'Try Finally'
    TabOrder = 1
    OnClick = BtnTryFinallyClick
  end
  object BtnTryTry: TButton
    Left = 328
    Top = 24
    Width = 113
    Height = 49
    Caption = 'Try Try'
    TabOrder = 2
    OnClick = BtnTryTryClick
  end
end