Comment compter les caracteres dans un string

Résolu
guy jeuniaux Messages postés 35 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 27 avril 2010 - 30 sept. 2004 à 00:11
guy jeuniaux Messages postés 35 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 27 avril 2010 - 30 sept. 2004 à 19:05
Bonjour

j'aimerai à partir d'un string récupéré dans un edit, compter les caracteres mot par mot.

Exemple : la ligne : aaaa bbbbbb cccccccccc dddddddddddddd
en sachant que chaque mot est séparé par un seul
espace
je voudrais obtenir une réponse du style :
listbox1:
4
6
10
14

Si quelqu'un à une idée

D'avance
MERCI
guy
A voir également:

6 réponses

japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
30 sept. 2004 à 10:56
J'avais oublié l'éventualité d'une chaîne vide passée en paramètre.

Il faut donc rajouter au début :

if Chaine = EmptyStr then Exit;


Ce qui donne :

procedure CompteCaracteresMots(Chaine: String; ListBox: TListBox);
var Mot: String;
begin
  if Chaine = EmptyStr then Exit;
  ListBox.Clear;
  Chaine := Trim(Chaine);
  Chaine := Chaine + ' ';   // pour lire le dernier mot
  repeat
    Mot := Copy(Chaine, 1, Pos(' ', Chaine) -1);
    ListBox.Items.Add(IntToStr(Length(Mot)));
    Delete(Chaine, 1, Length(Mot));
    Chaine := TrimLeft(Chaine);
  until Length(Chaine) = 0;
end;


Je vais finir par y arriver... :approve)

Bonne prog' :-p
3
cs_MAsterC Messages postés 217 Date d'inscription lundi 4 février 2002 Statut Membre Dernière intervention 19 décembre 2012
30 sept. 2004 à 00:31
Salut,

Je ne sais pas trop si c'est comme sa tu veux sa :-p
ListBox1.Items.Add(IntToStr(Edit1.GetTextLen));


a+

:) MAsterC - Power Of Dream. ;)
Site Internet!
0
guy jeuniaux Messages postés 35 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 27 avril 2010
30 sept. 2004 à 08:07
MAsterC,
Merci pour ta réponse , cela fonctionne mais je récupère le nombre total de caractères.

Ce que je souhaite en fait c'est obtenir la longueur de chaque mot.
Une petite précision les caractères seront en fait toujours les mêmes ( que des a ou que des b) séparés par un espace.
guy
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
30 sept. 2004 à 08:52
Bonjour, guy jeuniaux,

Ceci devrait faire l'affaire :

procedure CompteCaracteresMots(Chaine: String; ListBox: TListBox);
var i, PosEspace, NbreEspaces: Integer;
    Mot: String;
begin
  ListBox.Clear;
  NbreEspaces := 0;
  for i := 1 to Length(Chaine) do
    if Copy(Chaine, i, 1) = ' ' then inc(NbreEspaces); // compte les espaces
  Chaine := Chaine + ' ';   // pour lire le dernier mot
  for i := 0 to NbreEspaces do
  begin
    PosEspace := Pos(' ', Chaine);
    Mot := Copy(Chaine, 1, PosEspace);
    Chaine := Copy(Chaine, PosEspace + 1, Length(Chaine));
    if Mot <> ' ' then ListBox.Items.Add(IntToStr(Length(Mot) -1));
    {prise en compte faute de saisie genre double espace, voire triple ou plus...}
  end;
end;


à utiliser par exemple comme ceci :

procedure TForm1.Button1Click(Sender: TObject);
begin
  CompteCaracteresMots(Edit1.Text, ListBox1);
end;


Bonne prog' :-p
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
30 sept. 2004 à 10:43
Mon code précédent était un peu "tarabiscoté".

Voici une manière un poil plus élégante pour parvenir au même résultat :

procedure CompteCaracteresMots(Chaine: String; ListBox: TListBox);
var Mot: String;
begin
  ListBox.Clear;
  Chaine := Trim(Chaine);
  Chaine := Chaine + ' ';   // pour lire le dernier mot
  repeat
    Mot := Copy(Chaine, 1, Pos(' ', Chaine) -1);
    ListBox.Items.Add(IntToStr(Length(Mot)));
    Delete(Chaine, 1, Length(Mot));
    Chaine := TrimLeft(Chaine);
  until Length(Chaine) = 0;
end;


Bonne prog' :-p
0
guy jeuniaux Messages postés 35 Date d'inscription vendredi 12 mars 2004 Statut Membre Dernière intervention 27 avril 2010
30 sept. 2004 à 19:05
Merci japee
je vais essayer
guy
0
Rejoignez-nous