我有一个应用程序,用户可以在其中设置值的显示方式。用户输入格式化字符串,组件使用 FormatFloat 来显示该值。
但现在我们正在使用一个新的第三方组件,它使用 Format 函数格式化值,当然,我们的用户格式都不起作用,因为 Format 和 FormatFloat 函数使用不同的语法。
那么有人知道两者之间转换的方法吗?或者也许有人有代码可以做到这一点?
谢谢
阿杰
最佳答案
虽然 FormatFloat 的格式字符串或多或少可以转换为 Format 的格式字符串,但您可能只能获得正值的真正相似性。 Format 方法根本没有提供足够的灵 active 来合并 FormatFloat 方法的格式字符串提供的功能和细粒度控制。
例如,FormatFloat 方法允许使用三种不同的格式来表示正值、负值和零值。此外,FormatFloat 格式字符串允许使用字符串文字,例如'#,##0.00;;零'; (这意味着零值被打印为“零”)。
要使用 Format 函数获得类似的结果,您自己需要完成 FormatFloat 通过格式字符串为您完成的所有繁重工作。
因此,尽管我反对更改第三方控件的源代码,就像我反对更改 vcl 源代码一样,但我同意 David 的观点:找到一种方法使第三方控件使用 FormatFloat 函数。最好通过自定义后代或通过插入器类(也称为拦截器类),但如果失败,请务必更改第三方控件的源。只需确保正确标记更改的部分,以便在切换到该控件的新版本时可以轻松重做。
关于Delphi FormatFloat 和 Format 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4992043/