2011-02-14 60 views
3

我有一個應用程序,用戶可以設置如何顯示值。用戶輸入格式化字符串,組件使用FormatFloat顯示值。德爾福FormatFloat和格式函數

但是現在我們正在使用一個新的第三方組件,它使用Format函數格式化值,當然我們的用戶格式中沒有一個格式工作,格式& FormatFloat函數使用不同的語法。

因此,有誰知道兩種方式之間的轉換?或者也許有人有代碼來做到這一點?

感謝,

AJ

回答

3

儘管FormatFloat的格式字符串可以或多或少地轉換爲Format格式字符串,但您可能只能得到正值的真正相似性。 Format方法根本無法提供足夠的靈活性來整合FormatFloat方法提供的格式字符串的功能和精細控制。

例如,FormatFloat方法允許三種不同的格式用於正值,負值和零值。而且,FormatFloat格式字符串允許字符串文字,例如'#,## 0.00 ;;零'; (這意味着零值被打印爲「零」)。

要使用Format函數獲得類似的內容,您自己需要通過格式字符串來完成FormatFloat爲您所做的所有工作。

所以,雖然我不同意改變第三方控件的源代碼,因爲我反對更改vcl源代碼,但我與David一起:找到一種方法讓第三方控件使用FormatFloat函數。最好通過一個自定義後代或通過一個插入器類(也稱爲攔截器類),但如果失敗了,通過一切手段改變第三方控件的來源。只要確保正確標記已更改的部分,以便在切換到該控件的新版本時可以輕鬆地對其進行重做。

+0

+1我同意你對改變第三方來源的看法;實際上它總是必須完成。修正控制是您在這項工作中的朋友(因爲它在許多其他場合)。 – 2011-02-14 15:03:56

2

遠遠地佔據了最簡單的解決方法是將採取第三方組件的源(你應該只考慮使用附帶源第三方德爾福組件)並對其進行修改致電FormatFloat而不是Format