IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Lazarus Pascal Discussion :

Application.UpdateFormatSettings -> UpdateFormatSettings is not portable [Lazarus]


Sujet :

Lazarus Pascal

  1. #1
    Membre à l'essai
    Homme Profil pro
    ing électromécaniciens
    Inscrit en
    Février 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : ing électromécaniciens
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2016
    Messages : 8
    Points : 15
    Points
    15
    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 : 567
Taille : 79,1 Ko
    Et surtout, aucun changement dans les paramètres !
    Que faire ?

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

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

    Informations forums :
    Inscription : Août 2014
    Messages : 336
    Points : 680
    Points
    680
    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
    Membre à l'essai
    Homme Profil pro
    ing électromécaniciens
    Inscrit en
    Février 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : ing électromécaniciens
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2016
    Messages : 8
    Points : 15
    Points
    15
    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
    Expert confirmé
    Avatar de BeanzMaster
    Homme Profil pro
    Amateur Passionné
    Inscrit en
    Septembre 2015
    Messages
    1 899
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Septembre 2015
    Messages : 1 899
    Points : 4 346
    Points
    4 346
    Billets dans le blog
    2
    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

    Mes projets sur Github - Blog - Site DVP

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

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

    Informations forums :
    Inscription : Août 2014
    Messages : 336
    Points : 680
    Points
    680
    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 éclairé

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

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

    Informations forums :
    Inscription : Octobre 2009
    Messages : 168
    Points : 807
    Points
    807
    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
    Membre à l'essai
    Homme Profil pro
    ing électromécaniciens
    Inscrit en
    Février 2016
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : ing électromécaniciens
    Secteur : Services à domicile

    Informations forums :
    Inscription : Février 2016
    Messages : 8
    Points : 15
    Points
    15
    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, 13h40
  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, 11h19
  3. Réponses: 1
    Dernier message: 07/11/2009, 05h09
  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, 15h36
  5. Application VB.net pour telephone portable
    Par peregna2007 dans le forum VB.NET
    Réponses: 1
    Dernier message: 25/08/2008, 15h01

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