This is a algorithm for getting vulgar fraction from decimal fraction.
function HOD(x, y: Integer): Integer; begin if (x mod y)<>0 then Result:=HOD(y, x mod y) else Result:=y; end; procedure Elements(St: string; var x,y: Real); var Denom, i, L, Max: Integer; begin Denom:=1; L:=Length(St); for i:=1 to L do Denom:=Denom*10; Max:=HOD(Denom, StrToInt(St)); y:=Denom/Max; x:=StrToInt(St)/Max; end; procedure TForm1.Button1Click(Sender: TObject); var P, Max: Integer; St: string; x, y: Real; begin P:=Pos('.', Edit1.Text); if P<>0 then begin Label6.Caption:=Copy(Edit1.Text, 1, P-1); St:=Copy(Edit1.Text, P+1, Length(Edit1.Text)-P); Elements(St, x, y); Label2.Caption:=FloatToStr(x); Label4.Caption:=FloatToStr(y); end else begin Label6.Caption:=Edit1.Text; Label2.Caption:='1'; Label4.Caption:='1'; end; end;