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;