2012-04-07 5 views
1

サービスとして実行できるデルファイアプリケーションがあります。私たちは、Windows 7マシン上でサービスとしてアプリケーションを実行している間に、短いフォーマットに問題があります。 Delphi/Win 7は、間違った短縮形式を返します。私たちが選択したロケールに関係なく、常に「DD-MM-YYYY」形式を返します。これは、サービスとして実行して勝利した場合にのみ発生します。アプリケーションがサービスとして実行されていないときは、問題はありません。 フォーマットを2回変更して保存するという回避策を試しましたが、無駄です ここには何か助けがありますか?デルファイアプリケーションがサービスとして実行されているときにショートフォーマットが間違っています

+0

日付を文字列に変換するコードを掲載します。 – ChrisF

答えて

2

あなたのサービスは、実行されるユーザーアカウントのロケール設定を取得します。私の推測では、あなたはLOCALSYSTEMとしてサービスを実行しています。対話ユーザーとして実行するようにサービスを構成すると、必要なロケール設定が取得されます。

+1

ローカルシステムアカウントのデフォルトのセキュリティポリシーは、「通常の」ユーザーアカウントのデフォルトと異なります。たとえば、ネットワークアクセスは、デフォルトではローカルシステムアカウントでは利用できません。その領域の要件に応じて、サービスを実行する際に注意を払ってアカウントを選択または作成する必要があります。 –

0

サービスで日付形式が必要な場合は、サービス作成イベントのShortDateFormatグローバル変数を使用してフォーマットを設定します。 Windows 7をインストールすると、国とデフォルトのシステムフォーマットが選択されました。インストール後、ユーザーフォーマットは変更できますが、システムフォーマットは変更できません。たぶん、いくつかのレジストリのハッキングがあります。

0

データ処理のためにユーザーロケールを決して使用しないでください。

データを固定フォーマットで処理する必要がある場合は、TFormatSettingsという明示的なインスタンスを作成し、TFormatSettingsを第2パラメータとするSysUtilsプロシージャ/ファンクションを使用します。

表示目的では、ユーザーはアプリケーションがコントロールパネルのロケール設定を使用することを期待しています。

関連する問題