1. #1
    Futur Membre du Club
    Homme Profil pro
    ingénieur électromécanique
    Inscrit en
    février 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Belgique

    Informations professionnelles :
    Activité : ingénieur électromécanique
    Secteur : Services à domicile

    Informations forums :
    Inscription : février 2016
    Messages : 6
    Points : 9
    Points
    9

    Par défaut Application.UpdateFormatSettings -> UpdateFormatSettings is not portable

    Je voulais changer certains paramètres par défaut (dates, séparateurs décimaux…). J’ai trouvé comment faire. Enfin, je pense…
    Je place donc une variable fs dans mes var…
    var
    Form1: TForm1;
    fs : TFormatSettings;
    et mes changements dans un « initialization » à la fin de la formcreate.
    Mais lors de la compilation, j’ai "UpdateFormatSettings is not portable" !
    Nom : ApplicationUpdFormSet.jpg
Affichages : 54
Taille : 79,1 Ko
    Et surtout, aucun changement dans les paramètres !
    Que faire ?

  2. #2
    Membre confirmé
    Avatar de FOCUS77
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2014
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : août 2014
    Messages : 302
    Points : 625
    Points
    625

    Par défaut

    Bonjour

    Si c'est juste pour changer les paramètres locaux tu peux utiliser cette méthode.

    //uses windows
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TForm1.Button1Click(Sender: TObject);
    begin
    SetLocaleInfo(GetSystemDefaultLCID, LOCALE_SDECIMAL, '.');
    SetLocaleInfo(GetSystemDefaultLCID, LOCALE_SCURRENCY, 'EURO');
    SetLocaleInfo(GetSystemDefaultLCID, LOCALE_SDATE, '/');
    end;
    tu trouvera les paramètres ici: https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

  3. #3
    Futur Membre du Club
    Homme Profil pro
    ingénieur électromécanique
    Inscrit en
    février 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Belgique

    Informations professionnelles :
    Activité : ingénieur électromécanique
    Secteur : Services à domicile

    Informations forums :
    Inscription : février 2016
    Messages : 6
    Points : 9
    Points
    9

    Par défaut

    Ohhh
    En mettant windows dans mes Uses et "SetLocaleInfo(GetSystemDefaultLCID, LOCALE_SDATE, '/');" dans mon Initialization, j'ai une multitude d'erreurs qui surviennent...
    J'ai trouvé sur ce forum "...DefaultFormatSettings est en lecture seule..."
    Je vais donc écrire quelques lignes pour formater ma date comme j'ai envie
    Mais si vous avez d'autres idées ? Merci...

  4. #4
    Membre confirmé

    Homme Profil pro
    Amateur Passionné
    Inscrit en
    septembre 2015
    Messages
    293
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Amateur Passionné
    Secteur : Tourisme - Loisirs

    Informations forums :
    Inscription : septembre 2015
    Messages : 293
    Points : 588
    Points
    588

    Par défaut

    Salut effectivement il faut utiliser DefaultFormatSettings
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function GetDecimalSeparator: Char;
    begin
      Result := DefaultFormatSettings.DecimalSeparator;
    end;
     
    procedure SetDecimalSeparator(AValue: Char);
    begin
     DefaultFormatSettings.DecimalSeparator := AValue;
    end;
    sinon dans l'unité sysutils on peux utiliser FormatSetting qui fait référence à DefaultFormatSettings -->FormatSettings : TFormatSettings absolute DefaultFormatSettings;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
      var
        S: String;
        c: CHAR;
      begin
        c := SysUtils.FormatSettings.DecimalSeparator;
        SysUtils.FormatSettings.DecimalSeparator := '.';
        S := Trim(ReadLine);
        result := StrToFloat(S);
        SysUtils.FormatSettings.DecimalSeparator := c;
      end;
    • "L'Homme devrait mettre autant d'ardeur à simplifier sa vie qu'il met à la compliquer" - Henri Bergson
    • "Bien des livres auraient été plus clairs s'ils n'avaient pas voulu être si clairs" - Emmanuel Kant
    • "La simplicité est la sophistication suprême" - Léonard De Vinci
    • "Ce qui est facile à comprendre ou à faire pour toi, ne l'est pas forcément pour l'autre." - Mon pèrei

  5. #5
    Membre confirmé
    Avatar de FOCUS77
    Homme Profil pro
    Développeur informatique
    Inscrit en
    août 2014
    Messages
    302
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : août 2014
    Messages : 302
    Points : 625
    Points
    625

    Par défaut

    Citation Envoyé par andre corbi Voir le message
    Ohhh
    En mettant windows dans mes Uses et "SetLocaleInfo(GetSystemDefaultLCID, LOCALE_SDATE, '/');" dans mon Initialization
    Non!
    il ne faut pas insérer SetLocaleInfo(GetSystemDefaultLCID, LOCALE_SDATE, '/') dans Initialization mais dans l'evenement OnCreate()
    de la Forme principale.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    procedure TMAINFORM.FormCreate(Sender: TObject);
    begin
    SetLocaleInfo(GetSystemDefaultLCID, LOCALE_SDECIMAL, '.');
    SetLocaleInfo(GetSystemDefaultLCID, LOCALE_SCURRENCY, 'EURO');
    SetLocaleInfo(GetSystemDefaultLCID, LOCALE_SDATE, '/');
    end;

  6. #6
    Membre confirmé

    Homme Profil pro
    Rédacteur technique (retraité)
    Inscrit en
    octobre 2009
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Rédacteur technique (retraité)

    Informations forums :
    Inscription : octobre 2009
    Messages : 115
    Points : 534
    Points
    534

    Par défaut

    Citation Envoyé par andre corbi Voir le message
    ...
    Je vais donc écrire quelques lignes pour formater ma date comme j'ai envie
    Mais si vous avez d'autres idées ? Merci...
    Plutôt que de réinventer l'eau chaude et sans chambouler les formatages par défaut, il y a aussi les formes étendues des fonctions de conversion StrToDate ou DateToStr qui disposent d'un paramètre supplémentaire FormatSettings de type TFormatSettings (la variable fs telle que définie plus haut est de ce type et pourrait convenir).

    Edit : Cette forme étendue avec paramètre TFormatSettings existe aussi pour de nombreuses autres routines de conversion ou de formatage de l'unité Sysutils.

  7. #7
    Futur Membre du Club
    Homme Profil pro
    ingénieur électromécanique
    Inscrit en
    février 2016
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : Belgique

    Informations professionnelles :
    Activité : ingénieur électromécanique
    Secteur : Services à domicile

    Informations forums :
    Inscription : février 2016
    Messages : 6
    Points : 9
    Points
    9

    Par défaut

    Voilà..
    J'ai donc inséré "windows" dans les uses, mis "SetLocaleInfo(GetSystemDefaultLCID, LOCALE_SDATE, '/');" dans mon Initialization et corrigé quelques erreurs (suite à l'introduction de Windows dans les Uses. Ex : "Beep;" qui est devenu "sysutils.beep;")
    Et tout va bien pour les séparateurs de dates...
    Pour les autres possibilités, merci à Focus77 pour le lien : https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 14
    Dernier message: 22/02/2016, 14h40
  2. [JUnit] Tests unitaires : Application's context is not initialized
    Par stof dans le forum Tests et Performance
    Réponses: 1
    Dernier message: 28/02/2012, 12h19
  3. Réponses: 1
    Dernier message: 07/11/2009, 06h09
  4. Savoir si l'application est lancée d'un Portable ou d'un Fixe
    Par Korleone dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 20/10/2009, 16h36
  5. Application VB.net pour telephone portable
    Par peregna2007 dans le forum VB.NET
    Réponses: 1
    Dernier message: 25/08/2008, 16h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo