2012-01-09 13 views
2

地域の設定とは別にアプリケーション(D2006)を作成する必要があります。すべての日付の形式は同じでなければなりません。Delphi - 地域の設定に依存しないアプリケーション

私はすべてのFormatDateTime( 'adateformate')をFormatDateTime( 'aConstantDefined')に置き換えたいと思います。また Application.UpdateFormatSettingsApplication.UpdateMetricSettingsはFalseに設定する必要があります。

私は気をつけなければならないことはありますか?

LE:問題は、2つの異なる地域設定のユーザーがいて、設定を統一したくないということです。私はそれが奇妙に聞こえることを知っているが、これは事実である。したがって、私は自分のアプリケーションを地域の設定とは完全に独立させる必要があるのです。

+1

それはそれですが、なぜ地域の設定を無視したいのですか?それはあなたのユーザーにとってまったく親切ではありませんか? –

+0

"地域の設定とは関係なく、"あなたはローカルシステムの日付/時刻/小数点の区切り記号を無視したいと言っていますか? – PresleyDias

+0

@all - 私のLEを読んでください。ありがとうございました。 – RBA

答えて

8

あなた自身のTFormatSettingsレコードを適用してください。適切な場合はFormatDateTime('aConstantDefined',ADateTime,myFormatSettings)に電話してください。

これにより、アプリケーションでシステムフォーマットの設定が変更された場合でも問題なく動作します。 Application.UpdateFormatSettingsApplication.UpdateMetricSettingsを使用する必要はありません。

更新:

私は地域の設定に関わるすべてのフォーマット文字列関数は、TFormatSettingsオーバーロードされたパラメータを取ることを追加する必要があります。アプリケーションをスレッドセーフにするためによく使用されますが、地域の設定をオーバーライドすると便利です。私はしばしば、通信/保存目的のためにデータをシリアライズ/デシリアライズするときにこのテクニックを使用します。

+0

日付を内部的に 'TDate'や' TDateTime'として扱い、文字列ではない限り、かなり安全です。本当の問題は、異なるタイムゾーンがある場合です! (ああ、お金も面倒です。) –

+1

@LeonardoHerrera、お金はいつも面倒です:)。はい、データを最適な形式に保ち、I/O中に必要な変換のみを行います。 –

+0

@LeonardoHerrera:ローカルマシンのタイムゾーンオフセットで入力を調整した後、UTCの日付/時刻の値を 'TDateTime'に格納することができます。マシンがUTC 0で動作しているかのように、通常はほとんどの操作で 'TDateTime'を使用することができます。ローカルタイムスタンプ値と比較するときはいつでもローカルタイムゾーンを考慮して、文字列に変換するなどしてください。 –

関連する問題