0

我在 delphi 表单上有 stringgrid,我试图将一个单元格的值与另一列中另一个单元格的值相除。

但问题是,stringgrid 单元格填充了不同类型的数字,所以我得到了 ConvertErrors。例如,单元格中的数字可能看起来像 0.37 或 34 或 0.0013 或 0.00 或 0.35 或 30.65 或 45.9108 或 0.0307 或 6854.93。

换句话说,我永远不知道在这些单元格中它会是实数、浮点数、整数还是任何其他类型的类型。

我在互联网上到处寻找,但没有运气。任何人任何想法。顺便说一句,我不完全是德尔福专家。谢谢。

4

3 回答 3

3

对于每个字符串,首先使用StrToFloatin 函数将其转换为浮点值SysUtils.pas。这应该允许处理任何数字类型(除非你有一些不寻常的东西,比如复数)。由于您在上面的列表中有一些零值,您还应该确保检查除以零的条件,因为这也可能引发异常。

于 2012-08-30T10:13:35.643 回答
3

TryStrToFloat, TryStrToInt, TryStrToInt64为此,SysUtils 具有许多功能,例如 etc。这些函数接受一个引用参数(var 参数)来返回转换后的值,如果转换成功,函数本身返回 true。

如果您确定字符串有一个有效数字,那么您可以在决定使用哪个函数之前检查输入字符串是否有小数点。

于 2012-08-30T23:11:03.413 回答
2

将所有数字视为浮点数。使用StrToFloat,将数字相除,然后使用 将结果转换回字符串FloatToStr。如果结果是整数,则不会产生小数点。

于 2012-08-30T10:12:58.637 回答