delphi - Delphi如何输入分数?

标签 delphi delphi-2010

我有一个应用程序将使用测量值,特别是小到 1/16 英寸。我真的很想为最终用户提供一种方便的方式来输入一个包含小数部分的值,例如 3 7/16。我意识到我可以要求用户只输入十进制值(即 3.1875),但我真的想要一个更好的方法。有谁知道可以轻松输入的下拉或旋转控件? (理想情况下是控件的 DB 版本。)

最佳答案

你可以做的很简单

function FractionToFloat(const S: string): real;
var
  BarPos: integer;
  numStr, denomStr: string;
  num, denom: real;
begin
  BarPos := Pos('/', S);
  if BarPos = 0 then
    Exit(StrToFloat(S));
  numStr := Trim(Copy(S, 1, BarPos - 1));
  denomStr := Trim(Copy(S, BarPos + 1, Length(S)));
  num := StrToFloat(numStr);
  denom := StrToFloat(denomStr);
  result := num/denom;
end;

这将接受 3/7-4/91.5 示例形式的输入。

要允许整数部分,请添加

function FullFractionToFloat(S: string): real;
var
  SpPos: integer;
  intStr: string;
  frStr: string;
  int: real;
  fr: real;
begin
  S := Trim(S);
  SpPos := Pos(' ', S);
  if SpPos = 0 then
    Exit(FractionToFloat(S));
  intStr := Trim(Copy(S, 1, SpPos - 1));
  frStr := Trim(Copy(S, SpPos + 1, Length(S)));
  int := StrToFloat(intStr);
  fr := FractionToFloat(frStr);
  result := int + fr;
end;   

这将另外接受1 1/2所示例的形式的输入。

关于delphi - Delphi如何输入分数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18082644/

相关文章:

delphi - TTimer 对象可以是 Delphi 类的字段吗?

c# - 为 Delphi 应用程序编写 .NET (C#) dll

delphi - TButtons 和 "runtime themes": peculiar behavior

delphi - 如何使用delphi 2010 rtti设置数组长度

windows - 如何将表格置于帮助模式?

delphi - 在设计时访问子组件属性

delphi - Delphi 中使用泛型的属性

mysql - 使用 sql 语法为具有 Null 或任何其他值的特定行更新单个 BLOB 列

delphi - 将 SQL Server 查询转换为 Delphi 语法

delphi - 如何获取 SQL 查询的结果?