var elements: array of string[4];
a,b,count: integer;
input:string;
implementation
{$R *.dfm}
procedure prepare;
begin
count:=0;
input:=form1.edit1.text;
setlength(elements, 1);
elements[0]:='';
end;
procedure adjustform;
begin
form1.stringgrid1.rowcount:=count+1;
form1.stringgrid1.height:=((count+1)*24)+15;
if count > 2
then form1.Height:=((count+1)*24)+70
else form1.height:=165;
end;
procedure fillarray;
var i:integer;
begin
for i := 1 to length(input) do
if input[i] = ','
then begin
count:=count+1;
setlength(elements, count+1);
elements[count] := '';
end
else elements[count]:=elements[count] + input[i];
end;
procedure fillgrid;
var i:integer;
begin
for i := 0 to count do
form1.stringgrid1.cells[0,i]:=elements[i];
end;
function stringinteger(instring: string): boolean;
begin
result:=strtointdef(instring,0)=strtointdef(instring,1);
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
prepare;
fillarray;
adjustform;
fillgrid;
button2.Enabled:=true;
button3.enabled:=false;
label2.caption := '';
end;
procedure TForm1.Button2Click(Sender: TObject);
var i,j:integer;
begin
for i := 0 to count do
if stringinteger(elements[i]) = false
then begin
a:=strtoint(elements[i-2]);
b:=strtoint(elements[i-1]);
case elements[i][1] of '+': a:=a+b;
'-': a:=a-b;
'*': a:=a*b;
'/': a:=a div b;
end;
elements[i-2]:=inttostr(a);
for j := (i-1) to count do
elements[j]:=elements[j+2];
count:=count-2;
break;
end;
for i:= 0 to count do begin
stringgrid1.cells[0,i]:=elements[i];
if count = 0
then begin
button2.enabled := false;
button3.enabled := true;
end;
end;
adjustform;
end;
procedure TForm1.Button3Click(Sender: TObject);
var i,j:integer;
step:boolean;
begin
prepare;
fillarray;
step:=true;
button1.Enabled:=true;
button2.Enabled:=false;
while step do
for i := 0 to count do
if stringinteger(elements[i]) = false
then begin
a:=strtoint(elements[i-2]);
b:=strtoint(elements[i-1]);
case elements[i][1] of '+': a:=a+b;
'-': a:=a-b;
'*': a:=a*b;
'/': a:=a div b;
end;
elements[i-2]:=inttostr(a);
for j := (i-1) to count do
elements[j]:=elements[j+2];
count:=count-2;
step:=true;
break;
end
else
step := false;
label2.caption:=elements[0];
end;