2012-03-28 13 views
3

有沒有一個Windows API調用或Delphi調用,它會告訴我什麼字符集的Delphi 6期望通過其格式轉換例程,如StrToFloat()數字使用?例如,我怎樣才能知道Delphi是否會看到逗號或小數點的時間段?如何根據語言環境獲取Delphi 6程序中用於數字的字符集?

+1

又見這個問題的答案:它是確定使用DecimalSeparator強制Floattostr/Strtofloat功能使用小數點(http://stackoverflow.com/a/9816979/576719) – 2012-03-28 06:05:22

+1

@LURD 。這是一個很好的鏈接。幸運的是,我只讀取了DecimalSeparator的價值並對其進行了調整而不是改變它,但是,鏈接到的SO貼子是非常寶貴的。 – 2012-03-28 12:14:04

回答

5

不確定D6中是否有GetLocaleFormatSettings可供選擇。 (但它不在D5中)。
您可以使用DecimalSeparator全局變量(SysUtils)。

StrToFloat

DecimalSeparator全局變量定義了必須 用作小數點的字符。 1000個分隔符(千分隔符)和貨幣符號 不允許在字符串中。如果S不包含有效值,則 StrToFloat引發EConvertError異常。

DecimalSeparatorSysUtils單元自動在Forms單元響應分配通過在內部使用GetLocaleInfo API與LOCALE_SDECIMALLCType,並保持到WM_SETTINGSCHANGE(僅GUI應用程序)。


編輯:

  • GetLocaleFormatSettings可自D7。
  • DecimalSeparator已棄用於Delphi的較新版本(使用FormatSettings.DecimalSeparator)。
+1

謝謝Kobik。現在我做一個簡單的搜索,並根據您的答案替換DecimalSeparator的源字符串中找到的任何小數點。 – 2012-03-28 01:24:24

+1

+1。在'System'中還有'ShortDateFormat'和其他全局格式設置,這對於瞭解相關內容也很有幫助。 – 2012-03-28 02:42:44

+0

@ user539484,感謝編輯修正。 – kobik 2012-03-28 13:58:20

相關問題