2012-07-13 3 views
0

Comment puis-je obtenir le format régional correct pour Windows dans Delphi?Obtention du format de paramètres régionaux pour Windows

J'essaie de faire ensuite

LCID := 2048;  
FormatSettings := TFormatSettings.Create(LCID); 

mais cela ne fonctionne pas très bien si définir le format shortdate comme exemple '07 -13 \ 2012'. et variable sera égale

FormatSettings = 'MM/dd\yyyy' ?????

+0

Et quelle serait la valeur de 'LCID' être? –

+0

Vous essayez d'utiliser une routine de formatage standard sur un format de date non standard. L'exemple que vous donnez utilise deux séparateurs de date différents. Il n'y a aucun moyen de définir cela comme un format de date approprié. Pour le reste, utilisez le code dans la réponse de Gerald pour obtenir les paramètres par défaut de votre système. –

+0

Y a-t-il une raison pour laquelle vous devez utiliser ce format non-standard? Ne serait-il pas plus facile de coller à un format standard, ou aimez-vous la douleur ?! ;-) –

Répondre

0

Vous pouvez utiliser cette fonction?

var 
    formatSettings : TFormatSettings; 

begin 
    // Furnish the locale format settings record 
    GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT, formatSettings); 

    // And use it in the thread safe form of CurrToStrF 
    ShowMessage('1234.56 formats as = '+ 
       CurrToStrF(1234.56, ffCurrency, 4, formatSettings)); 
end; 

http://www.delphibasics.co.uk/RTL.asp?Name=GetLocaleFormatSettings

+0

Cette fonction est la même que ci-dessus J'écris procédure GetLocaleFormatSettings (Locale: TLocaleID; var AFormatSettings: TFormatSettings); begin AFormatSettings: = TFormatSettings.Create (paramètres régionaux); fin; – YoungMaster

0

Les premières lignes de TFormatSettings.Create (Locale) sont:

if not IsValidLocale(Locale, LCID_INSTALLED) then 
    Locale := GetThreadLocale; 

Quand je passe LOCALE_SYSTEM_DEFAULT (2048) comme mon locale, IsValidLocale retourne false et retourne GetThreadLocale 4105 (Canadien-anglais). Vous voudrez peut-être étudier cela plus en détail. Obtenez-vous les paramètres régionaux que vous attendez?

+0

@Young S'il vous plaît ne criez pas aux personnes qui essaient d'aider. La raison pour laquelle vous n'avez pas encore reçu de réponse satisfaisante est que votre question est si mauvaise. Je réalise que l'anglais n'est pas votre langue maternelle, mais vous devez essayer d'expliquer ce que vous faites. Je vous recommande de modifier la question et de consacrer beaucoup de temps et d'efforts à clarifier ce que vous essayez de réaliser. –

1

en fait, vous devriez considérer date:

TShortDateFormatParts = (sdfpPrefix, sdfpDatePart1, sdfpSplitter1, sdfpDatePart2, sdfpSplitter2, sdfpDatePart3, sdfpSuffix); 

dans votre code, vous devez:

  1. Rechercher et obtenir tout avant de conduire "d", ou "M" ou "Y" (préfixe).

  2. Recherchez et obtenez du texte avant le premier séparateur.

  3. Trouvez et obtenez la fin du premier séparateur.

  4. Recherchez et obtenez du texte avant le deuxième séparateur.

  5. Trouver et obtenir la fin du deuxième séparateur. Trouver et obtenir tout avant le texte final (suffixe).

  6. obtenir ce que nous avons fait maintenant partie finale

après:

obtenir la position du jour, mois et année dans la chaîne de format actuel

Questions connexes