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 :

Compter un certain caractère dans une chaine.


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 33
    Points : 18
    Points
    18
    Par défaut Compter un certain caractère dans une chaine.
    Salut à tous,

    Après une longue recherche sur le site, et différentes visites sur des aides pour Delphi, je ne trouve pas la réponse à ma question.

    J'aimerais en fait, via Delphi, compter combien de fois apparait un certain caractère dans une chaine.

    Par exemple, ma chaine serait : " Bonjour, qu'il fait beau aujourd'hui ",
    je choisirais de compter la lettre " u ", est le programme me donnerais : 6.

    Voilà j'éspère que vous avez compris, et que vous puissiez m'aider.

    Merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 560
    Points : 576
    Points
    576
    Par défaut
    Bonjour,

    Je ne pense pas qu'il exite une fonction pour cela. Je peux me tromper mais personelment je la coderais.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    function NbChar( Value: string; CountChar: char): Integer;
    var
      Index: Integer;
    begin
      result := 0;
      for Index := 0 to Length(Value) do begin
        if length[Index] = Value then 
          result := Result + 1;
      end;
    end;

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 33
    Points : 18
    Points
    18
    Par défaut
    Bonjour et merci de ton aide. J'ai essayé le code que tu m'a passé, mais impossible de compiler

    Delphi a du mal avec cette ligne, au niveau de length[Index] :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if length[Index] = Value the
    Il me dit '(' attendu(e) mais '[' trouvé(e).

    Zut alors

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 38
    Points : 18
    Points
    18
    Par défaut
    Bonjour

    Tu a essayé cela ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if length(Index) = Value the

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 33
    Points : 18
    Points
    18
    Par défaut
    Bonjour, oui j'avais aussi essayé : Types incompatibles.

  6. #6
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 862
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 862
    Points : 11 325
    Points
    11 325
    Billets dans le blog
    6
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
      function NbChar( Value: string; CountChar: char): Integer; 
    var 
      Index: Integer; 
    begin 
      result := 0; 
      for Index := 1 to Length(Value) do  
        if Value[Index] = CountChar then 
          result := Result + 1; 
    end;
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 560
    Points : 576
    Points
    576
    Par défaut
    Désolé, je ne me suis pas relus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if Value[Index] = CountChar then
    c'est a dire: si le caratètre [index] du string Value = le Char Countchar fair

    Les strings en delphi sont de 2 types

    le string 16 bit
    255 caratères max
    caractère [0] = nombre de caractères
    les carateres [1]..[255] contient les caratères
    Version unique du string en Delphi1 (c'est vieux) il reste encore implémenté

    Les string 32 bit, maintenant en standard
    Du caratère [0] au caratère[n] le caratère [n+1] contient 00 en hexa.
    C'est donc un string a zero terminal commen en C. Existe depuis Delphi2, c'est le string par defaut.

    REctification:
    Non seulement je ne me relis pas, mais je suis lent, la réponse a été donner alors que je tapais mon texte.

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 33
    Points : 18
    Points
    18
    Par défaut
    Apparement ça à l'air de marcher

    Merci à tous

    Je reposte si je m'aperçoit d'un problème

    EDIT : Petite question, j'ai besoin de récupérer le nombre de caractères d'un memo.

    Comment puis-je procéder ?

    Merci encore

  9. #9
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 667
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Haute Savoie (Rhône Alpes)

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

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 667
    Points : 6 996
    Points
    6 996
    Par défaut
    Citation Envoyé par illuzmax
    EDIT : Petite question, j'ai besoin de récupérer le nombre de caractères d'un memo.
    C'est pas : Length(Memo.Text) ?
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 33
    Points : 18
    Points
    18
    Par défaut
    Non,

    Opérateur non applicable à ce type d'opérande

  11. #11
    Membre actif

    Profil pro
    Personnel
    Inscrit en
    Septembre 2003
    Messages
    142
    Détails du profil
    Informations personnelles :
    Localisation : France, Meuse (Lorraine)

    Informations professionnelles :
    Activité : Personnel

    Informations forums :
    Inscription : Septembre 2003
    Messages : 142
    Points : 210
    Points
    210
    Par défaut
    Salut,
    Si c'est bien:Idem pour un DBMemo, et sans erreur...
    @+
    Fabrice

  12. #12
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 33
    Points : 18
    Points
    18
    Par défaut
    A voui excusez moi !

    C'est impécable, merci à tous

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 33
    Points : 18
    Points
    18
    Par défaut
    J'ai parlé trop vite !

    Il me faudrais maintenant savoir, comment supprimer tous les espaces de ma chaine ?

    J'en demande beacoup je sais, désolé

  14. #14
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Utilise la fonction toute faite StringReplace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    s:=StringReplace(s,' ','',rfReplaceall) ;
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  15. #15
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2003
    Messages
    560
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 560
    Points : 576
    Points
    576
    Par défaut
    Bonjour,

    Si vous compter les caractères d'un string issues d'un memo et sue vous ne trouvez pas le nombre auquelle vous vous attendez, cela peut être normale.

    Si vous faite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Memo.Lines.Clear;
    Memo.Lines.Add('AA');
    Memo.Lines.Add('BB');
    Memo.Lines.text (ou Memo.text) devrait contenire 'AA' + CRLF + 'BB'
    CRLF = #13 + #10 = l'indicateur de saut de ligne.

    Il se peut que vous contiez 6 caratères au lieux de 4 et que vous voyez des blans entre 'AA' et 'BB' si vous utilisez le text autre part.

  16. #16
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Par défaut
    Pour les retours chariots, il faut juste compléter le code de Graffito:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var s: string;
     
    s := StringReplace( MonMemo.Lines.Text,' ','', [ rfReplaceall] ) ;
    s :=stringReplace( s, #13#10, '', [ rfReplaceAll ] );
     
    Result := Length( s );
    bon courage !
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    33
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 33
    Points : 18
    Points
    18
    Par défaut
    D'accord, là c'est bon, je vous remercie, grandement

    Bonne journée

Discussions similaires

  1. supprimer certains caractères dans une chaine
    Par rene10 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 31/12/2009, 11h26
  2. [RegEx] Autoriser seulement certains caractères dans une chaine
    Par ptitdav80 dans le forum Langage
    Réponses: 2
    Dernier message: 03/06/2008, 20h54
  3. Réponses: 2
    Dernier message: 18/04/2008, 16h19
  4. Suppression de certains caractères dans une chaine
    Par Tchupacabra dans le forum Langage
    Réponses: 2
    Dernier message: 05/12/2007, 12h08
  5. Réponses: 4
    Dernier message: 29/11/2006, 15h09

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