All pastes #752576 Raw Edit

Zeug

public text v1 · immutable
#752576 ·published 2007-10-28 15:05 UTC
rendered paste body
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;