unit unit1;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls,
  ExtCtrls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Wurzel: TButton;
    Quadrat: TButton;
    Image1: TImage;
    RechenZeichen: TLabel;
    Plus: TButton;
    Minus: TButton;
    Mal: TButton;
    Ende: TButton;
    Geteilt: TButton;
    EingabeZahl1: TEdit;
    EingabeZahl2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    procedure QuadratClick(Sender: TObject);
    procedure PlusClick(Sender: TObject);
    procedure MinusClick(Sender: TObject);
    procedure MalClick(Sender: TObject);
    procedure EndeClick(Sender: TObject);
    procedure GeteiltClick(Sender: TObject);
    procedure WurzelClick(Sender: TObject);

  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;
  Zahl1, Zahl2, Ergebnis:Real;
  Fehler: Boolean;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.PlusClick(Sender: TObject);

begin
   Edit3.Text:= '';
   RechenZeichen.Caption:= Plus.Caption;
   try
      // Linux
      EingabeZahl1.Text:= StringReplace(EingabeZahl1.Text, ',', '.', [rfReplaceAll, rfIgnoreCase]);
      EingabeZahl2.Text:= StringReplace(EingabeZahl2.Text, ',', '.', [rfReplaceAll, rfIgnoreCase]);
      // Linux Ende
      Zahl1:= StrToFloat(EingabeZahl1.Text);
      Zahl2:= StrToFloat(EingabeZahl2.Text);
      Ergebnis:=Zahl1 + Zahl2;
      Edit3.Text:= FloatToStr(Ergebnis);
   Except
   on EConvertError do
   begin
      Edit3.Text:= '';
      ShowMessage('Du darfst natürlich nur Zahlen eingeben!');
   end;
   end;
end;

procedure TForm1.QuadratClick(Sender: TObject);
begin
   Edit3.Text:= '';
   try
      Zahl1:= StrToFloat(EingabeZahl1.Text);
      //Zahl2:= StrToFloat(EingabeZahl2.Text);
      Ergebnis:=Zahl1 * Zahl1;
      Edit3.Text:= FloatToStr(Ergebnis);
   Except
      on EConvertError do
        ShowMessage('Du darfst natürlich nur Zahlen eingeben!');
   end;
end;


procedure TForm1.EndeClick(Sender: TObject);
begin
   application.terminate;
end;

procedure TForm1.GeteiltClick(Sender: TObject);
begin
   Edit3.Text:= '';
   try
      // Linux
      EingabeZahl1.Text:= StringReplace(EingabeZahl1.Text, ',', '.', [rfReplaceAll, rfIgnoreCase]);
      EingabeZahl2.Text:= StringReplace(EingabeZahl2.Text, ',', '.', [rfReplaceAll, rfIgnoreCase]);
      // Linux Ende

      Zahl1:= StrToFloat(EingabeZahl1.Text);
      Zahl2:= StrToFloat(EingabeZahl2.Text);
   Except
      on EConvertError do
        ShowMessage('Du darfst natürlich nur Zahlen eingeben!');
   end;
   try
      Ergebnis:=Zahl1 / Zahl2;
      RechenZeichen.Caption:= Geteilt.Caption;
      Edit3.Text:= FloatToStr(Ergebnis);
   Except
      on EDivByZero do
      begin
        Edit3.Text:= '';
        ShowMessage('Division durch 0 ist nicht möglich!');
      end;
    end;
end;

procedure TForm1.WurzelClick(Sender: TObject);
begin
  begin
   Edit3.Text:= '';
   try
      Zahl1:= StrToFloat(EingabeZahl1.Text);
      //Zahl2:= StrToFloat(EingabeZahl2.Text);
         Except
      on EConvertError do
        ShowMessage('Du darfst natürlich nur Zahlen eingeben!');
   end;
      try
         Ergebnis:=sqrt(Zahl1);
         Edit3.Text:= FloatToStr(Ergebnis);
      except
           on EInValidOp do
           ShowMessage('Aus negativen Zahlen lässt sich keine Wurzel ziehen!');
      end;
end;
end;

procedure TForm1.MinusClick(Sender: TObject);
begin
   Edit3.Text:= '';
   try
      // Linux
      EingabeZahl1.Text:= StringReplace(EingabeZahl1.Text, ',', '.', [rfReplaceAll, rfIgnoreCase]);
      EingabeZahl2.Text:= StringReplace(EingabeZahl2.Text, ',', '.', [rfReplaceAll, rfIgnoreCase]);
      // Linux Ende

      Zahl1:= StrToFloat(EingabeZahl1.Text);
      Zahl2:= StrToFloat(EingabeZahl2.Text);
      RechenZeichen.Caption:= Minus.Caption;
      Zahl1:= StrToFloat(EingabeZahl1.Text);
      Zahl2:= StrToFloat(EingabeZahl2.Text);
      Ergebnis:=Zahl1-Zahl2;
      Edit3.Text:= FloatToStr(Ergebnis);
   Except
   on EConvertError do
   begin

      Edit3.Text:= '';
      ShowMessage('Du darfst natürlich nur Zahlen eingeben!');
   end;
   end;
end;

procedure TForm1.MalClick(Sender: TObject);
begin
   Edit3.Text:= '';
   try
      // Linux
      EingabeZahl1.Text:= StringReplace(EingabeZahl1.Text, ',', '.', [rfReplaceAll, rfIgnoreCase]);
      EingabeZahl2.Text:= StringReplace(EingabeZahl2.Text, ',', '.', [rfReplaceAll, rfIgnoreCase]);
      // Linux Ende

      Zahl1:= StrToFloat(EingabeZahl1.Text);
      Zahl2:= StrToFloat(EingabeZahl2.Text);
      RechenZeichen.Caption:= Mal.Caption;
      Zahl1:= StrToFloat(EingabeZahl1.Text);
      Zahl2:= StrToFloat(EingabeZahl2.Text);
      Ergebnis:=Zahl1 * Zahl2;
      Edit3.Text:= FloatToStr(Ergebnis);
   Except
      on EConvertError do
      begin
         Edit3.Text:= '';
         ShowMessage('Du darfst natürlich nur Zahlen eingeben!');
      end;
   end;
end;

end.

