unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 =
class(TForm)
ed_eingabe: TEdit;
bt_rechne: TButton;
procedure bt_rechneClick(Sender: TObject);
private
eingabe:
String;
erg:Real;
zwischen_erg:Real;
procedure rechnen(i:Integer);
{ Private-Deklarationen }
public
function ausdruck:
String;
function summand:
String;
function faktor:
String;
{ Public-Deklarationen }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
function TForm1.faktor;
var i,outa:Integer;
begin
for i := 0
to length(eingabe)
do
begin
if(TryStrToInt(copy(eingabe,0,length(eingabe)),outa) = true)
then
begin
faktor := eingabe;
delete(eingabe,1,length(eingabe));
end;
if(TryStrToInt(copy(eingabe,i,1),outa) = false)
and (copy(eingabe,i,1) <> '
')
then
begin
faktor := copy(eingabe,0,i-1);
delete(eingabe,1,i-1);
break;
end;
end;
end;
procedure TForm1.rechnen;
begin
if(copy(eingabe,i,1) = '
*')
Then
begin
delete(eingabe,i+1,1);
zwischen_erg := zwischen_erg * StrToFloat(faktor)
end
else
begin
delete(eingabe,i+1,1);
zwischen_erg := zwischen_erg / StrToFloat(faktor);
end;
if(copy(eingabe,i,1) = '
*')
or (copy(eingabe,i,1) = '
/')
Then
rechnen(i);
inc(i);
end;
function TForm1.summand;
var i:Integer;
begin
for i := 0
to length(eingabe)
do
begin
eingabe := copy(eingabe,i,length(eingabe));
zwischen_erg := StrToInt(faktor);
summand := FloatToStr(zwischen_erg);
if(copy(eingabe,i,1) = '
*')
or (copy(eingabe,i,1) = '
/')
Then
begin
rechnen(i);
summand := FloatToStr(zwischen_erg);
break;
end
else
exit;
end;
end;
function TForm1.ausdruck;
var i,fall:Integer;
begin
i := 0;
repeat
fall := 0;
if(copy(eingabe,0,1) = '
+')
then
fall := 1
else
if(copy(eingabe,0,1) = '
-')
Then
fall := 2;
if(fall <> 0)
then
delete(eingabe,1,1);
eingabe := copy(eingabe,i,length(eingabe));
if(fall = 1)
then
erg := erg + StrToFloat(summand)
else
if(fall = 2)
then
erg := erg - StrToFloat(summand)
else
erg := StrToFloat(summand);
i := 0;
until
eingabe = '
';
showMessage(FloattoStr(erg));
end;
procedure TForm1.bt_rechneClick(Sender: TObject);
begin
eingabe := ed_eingabe.Text;
ausdruck;
end;
end.