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 :

Formatage chaine hh:mm


Sujet :

Langage Delphi

  1. #1
    Membre régulier Avatar de KRis
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 232
    Points : 105
    Points
    105
    Par défaut Formatage chaine hh:mm
    Bonjour à tous, je sais que c'est une question "bateau" mais mes recherches sont infructueuses pour le moment...
    voilà j'ai un nombre d'heures et de minutes au format integer, et je souhaite l'afficher au format 'hh:mm'...
    je devrai pouvoir afficher en string :
    05:10
    10:00
    29:25
    ou même 150:00

    j'ai tester la fonction format mais sans succès...

    Un peu d'aide serait la bienvenue ?

    merci d'avance.

  2. #2
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut


    voici un exemple qui utilise conjointement les fonctions Format et FormatFloat

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Format('%s:%s',[FormatFloat('00', 9), FormatFloat('00', 6)]))
    9 et 6 sont les nombres à afficher, ce qui donne
    09:06

  3. #3
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Tu peux faire ceci par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function IntTimeToStr(Value: Integer): string;
    var
      H, M: Integer;
    begin
      H := Value div 60;
      M := Value mod 60;
      result := Format('%.2d:%.2d', [H, M]);
    end;
    [Edit] Grilled !
    [Edit2] La fonction va si l'integer contient des minutes, bien sûr !

    @+ Claudius

  4. #4
    Rédacteur
    Avatar de evarisnea
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2005
    Messages
    1 957
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Transports

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 957
    Points : 4 384
    Points
    4 384
    Par défaut
    claudius je te dis merci
    j'ai tout d'abord voulu utiliser uniquement la fonction Format, mais j'ai buté sur le format '00' et j'ai du contourner en utilisant la fonction FormatFloat. et dire que j'avais déjà réussi à le faire par le passé. c'est au vu de ton exemple que je me rends compte qu'il me manquait le point.

  5. #5
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Citation Envoyé par evarisnea Voir le message
    c'est au vu de ton exemple que je me rends compte qu'il me manquait le point.
    Ben ouais, ce petit point change tout. C'est autant subtile que déroutant.

    @+

  6. #6
    Membre régulier Avatar de KRis
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 232
    Points : 105
    Points
    105
    Par défaut
    Merci à tous,
    par contre j'ai corrigé un peu le dernier code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function IntTimeToStr(Value: integer): string;
    var
      H, M : Integer;
    begin
       M:=Value div 60;
      H:=M div 60;
      M:=M-H*60;
     
      Result := Format('%.2d:%.2d', [H, M]);
    end;
    et ça marche parfaitement

    Par contre maintenant faut que j'essaie de faire la fonction inverse...

  7. #7
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut
    Citation Envoyé par KRis Voir le message
    et ça marche parfaitement
    Je ne comprends pas ton code ! Value ne représente pas un nombre de minutes ?

    @+

  8. #8
    Membre actif
    Profil pro
    DEV
    Inscrit en
    Août 2006
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DEV

    Informations forums :
    Inscription : Août 2006
    Messages : 182
    Points : 211
    Points
    211
    Par défaut
    Salut,

    J'utilise la même méthode que Claudius et c'est impécable ...

    J'comprend pas trop non plus ton code ...

    Pour la fonction inverse c'est pas bien compliqué aussi

  9. #9
    Membre régulier Avatar de KRis
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    232
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 232
    Points : 105
    Points
    105
    Par défaut
    ah pardon, Value représente pour moi un nombre de secondes.

  10. #10
    Membre actif
    Profil pro
    DEV
    Inscrit en
    Août 2006
    Messages
    182
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : DEV

    Informations forums :
    Inscription : Août 2006
    Messages : 182
    Points : 211
    Points
    211
    Par défaut
    Ah pourtant tu avais spécifié au début un nombre d'heures et de minutes au format entier ^^

    M:=M-H*60;
    tu peu le remplacer (je pense) par

  11. #11
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Re,

    Alors avec des secondes je coderais ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    function IntTimeToStr(Value: Integer): string;
    var
      H, M: Integer;
    begin
      H := Value div 3600;
      M := (Value mod 3600) div 60;
      result := Format('%.2d:%.2d', [H, M]);
    end;
    Quant à la fonction inverse, tu souhaites traiter une chaîne 'hh:mm' et retourner des secondes ?

    @+

Discussions similaires

  1. [Toutes versions] Formatage chaine caracteres aprés extraction d'un fichier
    Par micol84 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/05/2015, 11h08
  2. [HighCharts] Formatage chaine de caractères
    Par pierricktpt dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 29/12/2014, 16h23
  3. [Debutant] formatage chaine de caractere
    Par olivier1209 dans le forum Langage
    Réponses: 1
    Dernier message: 19/03/2010, 12h24
  4. Formatage chaine entre WINDEV12 et l'AS400
    Par Eaques dans le forum WinDev
    Réponses: 9
    Dernier message: 03/07/2008, 14h32
  5. Formatage chaine de caractères
    Par fxp17 dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 14/03/2006, 17h01

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