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

 Delphi Discussion :

Premiere lettre de chaque mot en Majuscule


Sujet :

Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 47
    Points : 33
    Points
    33
    Par défaut Premiere lettre de chaque mot en Majuscule
    Bonjour,

    Je voudrais savoir comment faire pour affichage ma date, mais avec le jour et mois en majuscule

    J'ai essayer comme sa:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ShortDateFormat := 'dddd/dd/mmmm/yyyy';
    uppercase(DateToStr(Date))
    mais bon sa met tout en majuscule ... comment puis-je m'y prendre? Une fonction que j'ai loupé ?

    merci

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Je pense que la Fonction FormatDateTime ne fourni pas cela comme Option, je peux te proposer ceci qui supprime les doubles espaces et mets en masjuscule la première lettre de chaque Mot, bon c'est un code expérimental en fait, il doit en exister une autre version sur le forum

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    function ShaiProper(const Value: string): string;
    const
       DEC_MIN_MAJ = Ord('A') - Ord('a');
       SPACE_CHAR = ' ';
     
       function UpCharCase(c: Char): Char;
       asm
               CMP     AL,'a'
               JB      @@exit
               CMP     AL,'z'
               JA      @@exit
               ADD     AL,'A' - 'a'
       @@exit:
       end;
     
       function LowCharCase(c: Char): Char;
       asm
               CMP     AL,'A'
               JB      @@exit
               CMP     AL,'Z'
               JA      @@exit
               SUB     AL,'A' - 'a'
       @@exit:
       end;
     
    var
       Index, Offset: Integer;
       LastIsSpace, PriorIsSpace: Boolean;
    begin
       SetLength(Result, Length(Value));
       ZeroMemory(@Result[1], Length(Result));
     
       LastIsSpace := True;
       Offset := 0;
     
       for Index := 1 to Length(Value) do
       begin
          if Value[Index] = SPACE_CHAR then
          begin
             PriorIsSpace := LastIsSpace;
             LastIsSpace := True;
             if PriorIsSpace then
             begin
                Inc(Offset);
             end
             else
             begin
                Result[Index - Offset] := SPACE_CHAR;
             end;
          end
          else
          begin
             if LastIsSpace then
             begin
                Result[Index - Offset] := UpCharCase(Value[Index]);
             end
             else
             begin
                Result[Index - Offset] := LowCharCase(Value[Index]);
             end;
             LastIsSpace := False;
          end;
       end;
     
       SetLength(Result, Length(Result) - Offset);
    end;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 47
    Points : 33
    Points
    33
    Par défaut
    En effet ca marche nickel merci
    Par contre si quelqu'un a un truc de plus simple je prend quand même ... car pour comprendre le code de Shai avec l'ASM , enfin merci quand même sa me convient tout de même

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    tu as les fonctions UpCase en standard dans Delphi ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 694
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 694
    Points : 13 130
    Points
    13 130
    Par défaut
    Voici pour modifier une fois les textes pour tout le projet. A appeler dans l'Initialization.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    procedure DateStringFirstCharUpCase;
    var
      i :integer;
    begin
      for i := 1 to 12 do
        LongMonthNames[i][1] := UpCase(LongMonthNames[i][1]);
     
      for i := 1 to 7 do
        LongDayNames[i][1] := UpCase(LongDayNames[i][1]);
    end;
     
    initialization
      DateStringFirstCharUpCase;

  6. #6
    Membre éclairé Avatar de Kaféine
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 569
    Points : 736
    Points
    736
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    function EnCapitale(const AStr: string): string;
    begin
      Result := UpperCase(AStr[1]) + Copy(AStr, 2, Length(AStr));
    end;
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
      EnCapitale('salut');  //=> Salut
    dans ce cas:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
       EnCapitale(FormatDateTime(LongDateFormat, Now)); //=> Mercredi 20 mai 2009
    Akim Merabet

  7. #7
    Membre chevronné Avatar de chaplin
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 215
    Points : 1 819
    Points
    1 819
    Par défaut
    La proposition d'Andnotor est courte et efficace .

  8. #8
    Membre éclairé Avatar de Kaféine
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 569
    Points : 736
    Points
    736
    Par défaut
    Mon but était une ébauche de fonction générique...sans modification directe de la librairie delphi

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    TCapitalStyle = (csPremier, csTousLesMots);
    function EnCapitale(const AStr: string; AStyle: TCapitalStyle = csPremier): string;
     
      function CapitaliseTousLesMots(const S: string): string;
      var
        Tmp: TStringList;
        STmp: string;
        I: Integer;
      begin
        Result := '';
        Tmp := TStringList.Create;
        try
          ExtractStrings([' '], [], PAnsiChar(S), Tmp);
          for I := 0 to Tmp.Count - 1 do
          begin
            STmp := Tmp[I];
            Result := Result + ' ' + (UpperCase(STmp[1]) + Copy(STmp, 2, Length(STmp)));
          end;
        finally
          Tmp.Free;
        end;
      end;
     
    begin
      case AStyle of
        csPremier: Result := UpperCase(AStr[1]) + Copy(AStr, 2, Length(AStr));
        csTousLesMots: Result := CapitaliseTousLesMots(AStr);
      end;
    end;
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
     EnCapitale(FormatDateTime(LongDateFormat, Now), csTousLesMots); //=> Mercredi 20 Mai 2009
     EnCapitale('salut les amis molettes', csTousLesMots);//=> Salut Les Amis Molettes
    Akim Merabet

  9. #9
    Membre chevronné Avatar de chaplin
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 215
    Points : 1 819
    Points
    1 819
    Par défaut
    Ok, en tout cas le code asm de ShaiLeTroll est instructif.

  10. #10
    Membre éclairé Avatar de Kaféine
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    569
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 569
    Points : 736
    Points
    736
    Par défaut
    Le seul code asm que j'ai produit c'était à l'école.
    Akim Merabet

  11. #11
    Membre chevronné Avatar de chaplin
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 215
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 215
    Points : 1 819
    Points
    1 819
    Par défaut
    Il n'y a que quelques lignes de code, donc ça passe .

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

Discussions similaires

  1. Première lettre d'un mot en majuscule
    Par danyboy85 dans le forum Général Java
    Réponses: 8
    Dernier message: 07/02/2022, 06h59
  2. [XL-2003] Metrre la première lettre de chaque mot en MAJUSCULE
    Par Un Internaute dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 05/06/2015, 18h19
  3. mettre en majuscule la premiere lettre d'un mot
    Par teophane dans le forum Requêtes
    Réponses: 5
    Dernier message: 18/11/2011, 13h54
  4. Premiere lettre de chaque mot en majuscule
    Par lili2704 dans le forum Langage
    Réponses: 4
    Dernier message: 13/06/2007, 14h51
  5. recuperer la premiere lettre d'un mot
    Par ferrero dans le forum AWT/Swing
    Réponses: 5
    Dernier message: 16/08/2006, 17h13

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