try...except czyli obsługa wyjątków
Cel
Poprawimy pracę naszego kalkulatora, a dokładniej obsłużymy wyjątek który powstawał, gdy użytkownik nie wpisał liczb w pola i kliknął przycisk.
Końcowy efekt

Potrzebne komponenty
Metoda
1) Wstawiamy komponenty, wypisane w powyższej tabeli i zmieniamy im właściwość name na taką jaka jest w kolumnie "Nazwa"
2) Zmieniamy właściwości Caption lub Text według własnego uznania lub sugerując się rysunkiem
3) Do obsługi funkcji OnClick przycisku dodajemy poniższy kod. Linie które zostały dodane do pierwszej wersji kalkulatora zostały dodatkowo pogrubione.
4) Uruchamiamy program.
Trochę teorii
Obejmując dane wyrażenia znacznikami try ... except możemy obsłużyć każdy wyjątek który może powstać. Pod słowem except wpisujemy co program ma zrobić po zaistnieniu wyjątku, gdy już to uczynimy zamykamy deklarację znacznikiem end;
Kod źródłowy
Poprawimy pracę naszego kalkulatora, a dokładniej obsłużymy wyjątek który powstawał, gdy użytkownik nie wpisał liczb w pola i kliknął przycisk.
Końcowy efekt

Potrzebne komponenty
Edit1 |
TEdit |
Edit2 |
TEdit |
Label1 |
TLabel |
Label2 |
TLabel |
Label3 |
TLabel |
Button1 |
TButton |
Metoda
1) Wstawiamy komponenty, wypisane w powyższej tabeli i zmieniamy im właściwość name na taką jaka jest w kolumnie "Nazwa"
2) Zmieniamy właściwości Caption lub Text według własnego uznania lub sugerując się rysunkiem
3) Do obsługi funkcji OnClick przycisku dodajemy poniższy kod. Linie które zostały dodane do pierwszej wersji kalkulatora zostały dodatkowo pogrubione.
procedure TForm1.Button1Click(Sender: TObject);
var
X, Y, Z : Integer;
begin
try
X := StrToInt(Edit1.text);
Y := StrToInt(Edit2.text);
Z := X + Y;
Label3.Caption := IntToStr(Z);
except
MessageDlg('Nie wpisałeś liczb', mtInformation, [mbOk], 0);
end;
4) Uruchamiamy program.
Trochę teorii
Obejmując dane wyrażenia znacznikami try ... except możemy obsłużyć każdy wyjątek który może powstać. Pod słowem except wpisujemy co program ma zrobić po zaistnieniu wyjątku, gdy już to uczynimy zamykamy deklarację znacznikiem end;
Kod źródłowy
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
Edit2: TEdit;
Label2: TLabel;
Label3: TLabel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
procedure TForm1.Button1Click(Sender: TObject);
var
X, Y, Z : Integer;
begin
try
X := StrToInt(Edit1.text);
Y := StrToInt(Edit2.text);
Z := X + Y;
Label3.Caption := IntToStr(Z);
except
MessageDlg('Nie wpisałeś liczb', mtInformation, [mbOk], 0);
end;
end;
end.
Materiał dodany przez użytkownika: alphan
