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

Langage Delphi Discussion :

Fonction Format() : je n'y arrive pas !


Sujet :

Langage Delphi

  1. #1
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 187
    Points : 90
    Points
    90
    Par défaut Fonction Format() : je n'y arrive pas !
    Hi,

    Je souhaiterais pouvoir aligner sur la virgule, dans une colonne, une série de valeurs avec décimales. Il me faudrait donc une chaine de caractères alignés sur la virgule et complétée avec des espaces à gauche afin d'obtenir une chaîne qui a toujours la même longueur.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Format('%8.2F', [2.56]) et Format('%8.2F',[32.56])

    ...me retournent des chaines de longueur différente (impossible donc de les aligner sur le point décimal). Cela me donne ceci :

    alors que je voudrais ceci :

    Qui a la solution ?

    Merci.



    JJE

  2. #2
    Membre éprouvé
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Points : 963
    Points
    963
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    S:= Format('%5s',[Format('%.2F',[32.56])]);

  3. #3
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 448
    Points
    28 448
    Par défaut
    Sous Delphi 6 j'obtiens bien deux chaînes de 8 caractères dont 2 décimales

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    procedure TForm1.FormCreate(Sender: TObject);
    var
      s1 : string;
      s2 : string;
    begin
      s1 := Format('%8.2F', [2.56]);
      s2 := Format('%8.2F', [32.56]);
      ShowMessage( s1 + '(' + IntToStr(Length(s1)) + ')' + #13#10 + s2 + '('+IntToStr(Length(s2))+')');
    end;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  4. #4
    Membre expérimenté Avatar de guillemouze
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    876
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2004
    Messages : 876
    Points : 1 448
    Points
    1 448
    Par défaut
    essaye peut etre ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s1 := Format('%-8.2F', [2.56]);
    ou alors, c'est peut etre que ta font n'est pas à pas fixe

  5. #5
    Expert éminent sénior
    Avatar de Jipété
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    10 824
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 10 824
    Points : 15 249
    Points
    15 249
    Par défaut
    Bonsoir,
    Citation Envoyé par Jean-Jacques Engels Voir le message
    Hi,

    Je souhaiterais pouvoir aligner sur la virgule, dans une colonne, (...)
    As-tu bien pensé à sélectionner l'alignement de ta colonne (je suppose que tu utilises une Listview en mode vsReport) à taRightJustify ? J'utilise ça très souvent et ça fonctionne tip-top, plus le remplacement de "F" par "N", comme ça tu as automatiquement le séparateur des milliers, et c'est bien plus joli !
    Il a à vivre sa vie comme ça et il est mûr sur ce mur se creusant la tête : peutêtre qu'il peut être sûr, etc.
    Oui, je milite pour l'orthographe et le respect du trait d'union à l'impératif.
    Après avoir posté, relisez-vous ! Et en cas d'erreur ou d'oubli, il existe un bouton « Modifier », à utiliser sans modération
    On a des lois pour protéger les remboursements aux faiseurs d’argent. On n’en a pas pour empêcher un être humain de mourir de misère.
    Mes 2 cts,
    --
    jp

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 111
    Points : 64
    Points
    64
    Par défaut Alignement sur la virgule
    Ci-dessous le code que j’utilise, à toutes fins utiles.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TextOut(XA-AlignaD(Val),Y*16,Format('%n',[ Val])) ;
    Avec :
    Val valeur à imprimer (currency ou single)
    Y numéro de la ligne (integer) et 16 intervalle en pixels.
    XA pour positionner toutes les impressions (constante)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function AlignaD(V:currency):integer;
    var S:string;
        N:integer;
    begin
      S:=Format('%n',[V]);
      N:=Length(S);
      S:=Copy(S,1,N-2);
      Result:=Form1.Canvas.TextWidth(S);
    end;
    L'impression se fait sur Form1.Canvas.
    Si elle se fait sur une imprimante tu devrais facilement faire les modifications
    nécessaires.

    Il y a peut-être plus simple.

  7. #7
    Membre éprouvé
    Avatar de Montor
    Homme Profil pro
    Autre
    Inscrit en
    Avril 2008
    Messages
    879
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Avril 2008
    Messages : 879
    Points : 963
    Points
    963
    Par défaut
    je ne vois pas l'intérêt de la chose il peut aligner le texte a droit pour régler le problème

  8. #8
    Membre éprouvé Avatar de BuzzLeclaire
    Homme Profil pro
    Dev/For/Vte/Ass
    Inscrit en
    Août 2008
    Messages
    1 606
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Dev/For/Vte/Ass

    Informations forums :
    Inscription : Août 2008
    Messages : 1 606
    Points : 1 113
    Points
    1 113
    Par défaut
    Citation Envoyé par Montor Voir le message
    je ne vois pas l'intérêt de la chose il peut aligner le texte a droit pour régler le problème
    +1

    Surtout qu'il affiche apparement toujours 2 chiffre après la virgule.

  9. #9
    Membre confirmé
    Homme Profil pro
    Santé
    Inscrit en
    Septembre 2010
    Messages
    290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Santé
    Secteur : Santé

    Informations forums :
    Inscription : Septembre 2010
    Messages : 290
    Points : 534
    Points
    534
    Par défaut
    Salut,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ...Font.Pitch := fpFixed;

  10. #10
    Membre régulier
    Inscrit en
    Avril 2002
    Messages
    187
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 187
    Points : 90
    Points
    90
    Par défaut
    Hi,

    Toutes mes confuses pour le retour tardif.

    La solution était... évidemment... de prendre une police non proportionnelle !

    Merci pour vos réponses.



    JJE

  11. #11
    Membre éclairé

    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2010
    Messages
    297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Algérie

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Décembre 2010
    Messages : 297
    Points : 705
    Points
    705
    Par défaut
    n'oublies pas d'ajouter

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

Discussions similaires

  1. Je n'arrive pas a bien utiliser la fonction replace
    Par KawaJVC dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 21/04/2008, 18h50
  2. J'ai 3 fonctions mais j'arrive pas a en appeller une
    Par Ofeneim dans le forum VBA Access
    Réponses: 9
    Dernier message: 23/05/2007, 17h36
  3. Réponses: 4
    Dernier message: 16/01/2007, 13h16
  4. [Upload] Fonction d'upload : j'y arrive pas !
    Par nanti dans le forum Langage
    Réponses: 23
    Dernier message: 07/09/2006, 04h27
  5. SQL et les formats date : je n'y arrive pas !
    Par chargy dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 23/06/2005, 19h54

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