Delphi FormatFloat和Format函数

时间:2011-02-14 12:16:52

标签: delphi

我有一个应用程序,用户可以在其中设置值的显示方式。用户输入格式化字符串,组件使用FormatFloat显示值。

但是现在我们正在使用一个新的第三方组件,它使用Format函数格式化值,当然我们的用户格式都不像Format& FormatFloat函数使用不同的语法。

所以有人知道两者之间的转换方式吗?或者也许有人有代码可以做到这一点?

谢谢,

AJ

2 个答案:

答案 0 :(得分:3)

尽管FormatFloat的格式字符串可以或多或少地转换为格式的格式字符串,但您可能只能获得正值的真实相似性。 Format方法无法提供足够的灵活性来协调FormatFloat方法的格式字符串提供的功能和细粒度控制。

例如,FormatFloat方法允许三种不同的格式表示正值,负值和零值。此外,FormatFloat格式字符串允许字符串文字,例如'#,## 0.00 ;;零'; (这意味着零值打印为“零”)。

要使用Format函数获得类似的东西,你自己需要通过格式字符串完成FormatFloat为你做的所有繁重的工作。

所以,虽然我反对更改第三方控件的来源,因为我反对更改vcl源,但我和David在这一点上:找到一种方法让第三方控件使用FormatFloat函数。优选地通过自定义后代或通过插入器类(也称为拦截器类),但如果失败,则通过所有方式改变第三方控件的源。只需确保正确标记更改的部分,以便在切换到该控件的新版本时轻松重做。

答案 1 :(得分:2)

最简单的解决方案是采用第三方组件的源代码(您应该只考虑使用源代码附带的第三方Delphi组件)并将其修改为调用FormatFloat而不是{{1 }}