2012-01-09 5 views
2

Je dois faire une application (D2006) indépendante des paramètres régionaux, le plus important étant que tous les formats de date doivent être les mêmes. Pour la mendicité, je veux remplacer tous les FormatDateTime ('adateformate') avec FormatDateTime ('aConstantDefined'). En outre Application.UpdateFormatSettings et Application.UpdateMetricSettings doit être défini sur False.Delphi - Application indépendante des paramètres régionaux

Y a-t-il autre chose que je devrais faire/prendre en charge? LE: problème est que j'ai des utilisateurs avec 2 paramètres régionaux différents, et ils ne veulent pas uniformiser leurs paramètres. Je sais que cela semble étrange, mais c'est le fait. Donc, c'est la raison pour laquelle je dois rendre mon application totalement indépendante des paramètres régionaux.

+1

C'est à peu près tout, mais pourquoi voulez-vous ignorer les paramètres régionaux? Ce n'est pas vraiment gentil avec vos utilisateurs? –

+0

"Indépendamment des paramètres régionaux", vous voulez dire que vous voulez ignorer le séparateur date/heure/décimal du système local? – PresleyDias

+0

@all - lisez mon LE. Je vous remercie. – RBA

Répondre

8

Appliquer votre propre enregistrement TFormatSettings. Appelez FormatDateTime('aConstantDefined',ADateTime,myFormatSettings) le cas échéant.

Cela évitera des incidents si votre application modifie les paramètres de format du système. Vous n'avez donc pas besoin d'utiliser Application.UpdateFormatSettings et Application.UpdateMetricSettings.

Mise à jour:

Je dois ajouter que toutes les fonctions de chaîne de format impliqués avec des paramètres régionaux, prend le TFormatSettings paramètre surchargé. Il est souvent utilisé pour rendre l'application thread-safe, mais est très utile lors du remplacement des paramètres régionaux. J'utilise souvent cette technique lors de la sérialisation/désérialisation de données à des fins de communication/stockage.

+0

Tant que vous manipulez vos dates en interne comme «TDate» ou «TDateTime» et non des chaînes, vous devriez être assez sûr. Le vrai problème est quand vous avez différents fuseaux horaires! (Oh, l'argent est aussi un problème.) –

+1

@LeonardoHerrera, l'argent est toujours un problème :). Oui, conservez les données au meilleur format et effectuez uniquement les conversions nécessaires pendant les E/S. –

+0

@LeonardoHerrera: vous pouvez stocker les valeurs date/heure UTC dans un TDateTime après avoir ajusté l'entrée en premier par le décalage horaire de la machine locale. Vous pouvez utiliser le 'TDateTime' normalement pour la plupart des opérations comme si la machine tournait à UTC 0. Assurez-vous de prendre en compte le fuseau horaire local chaque fois que vous comparez avec des valeurs d'horodatage locales, convertissez en retour en string, etc –

Questions connexes