|
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Bonsoir à tous.
j'ai besoin de supprimer des espaces entre les mots dans un champ type chaine. je m'explique : dans un champ type varchar(40) j'ai un ou plusieurs mots séparés par un ou plusieurs espaces. je veux conserver un et un seul espace entre chaque mot. y-a t'il une instruction sql qui fait ça ? comment puis-je interdire plusieurs espaces (dans un édit) entre chaque mot ? |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
Sur Edit1Change, tu modifies la valeur de la propriété Text, en prenant soin
préalablement de mémoriser SelStart et SelLength, et de les restaurer après avoir fait le nettoyage dans ta chaine... Pour nettoyer la chaine... Tu crées une fonction qui prend une chaine en paramètre et qui en renvoie une autre... Si le retour de la fonction est différent du contenu de Edit1.Text alors, tu modifies le contenu... C'est une idée. delphi <logiciel.concept@orange.fr> :: Bonsoir à tous. :: j'ai besoin de supprimer des espaces entre les mots dans un champ :: type chaine. :: je m'explique : :: dans un champ type varchar(40) j'ai un ou plusieurs mots séparés par :: un ou plusieurs espaces. :: je veux conserver un et un seul espace entre chaque mot. :: y-a t'il une instruction sql qui fait ça ? :: comment puis-je interdire plusieurs espaces (dans un édit) entre :: chaque mot ? |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
c'est ça que je n'arrive pas à faire, la fonction qui va bien.
je ne sais pas comment compter le nombre de mots pour pouvoir compter le nombre d'espaces autorisés. une idée ? "BigGrizzly" <biggrizzlyENLEVERCA@zoo-logiqueETCAAUSSI.org> a écrit dans le message de news:ff331b$25m$1@sd-6498.dedibox.fr... > Sur Edit1Change, tu modifies la valeur de la propriété Text, en prenant > soin > préalablement de mémoriser SelStart et SelLength, et de les restaurer > après > avoir fait le nettoyage dans ta chaine... > > Pour nettoyer la chaine... Tu crées une fonction qui prend une chaine en > paramètre et qui en renvoie une autre... Si le retour de la fonction est > différent du contenu de Edit1.Text alors, tu modifies le contenu... > > C'est une idée. > > delphi <logiciel.concept@orange.fr> > :: Bonsoir à tous. > :: j'ai besoin de supprimer des espaces entre les mots dans un champ > :: type chaine. > :: je m'explique : > :: dans un champ type varchar(40) j'ai un ou plusieurs mots séparés par > :: un ou plusieurs espaces. > :: je veux conserver un et un seul espace entre chaque mot. > :: y-a t'il une instruction sql qui fait ça ? > :: comment puis-je interdire plusieurs espaces (dans un édit) entre > :: chaque mot ? > > |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
delphi a écrit :
> c'est ça que je n'arrive pas à faire, la fonction qui va bien. > je ne sais pas comment compter le nombre de mots pour pouvoir compter le > nombre > d'espaces autorisés. > une idée ? J'ai du développer ça un certain nombre de fois... mais là, je n'ai plus l'algo sous la main... Si je devais le refaire, je parcourrais la chaîne, et si je tombe sur un espace, je regarderais le caractère suivant, et si c'est un espace, je le supprime... jusqu'à ce que le nouveau caractère suivant ne soit pas un espace, auquel cas je reprendrais ma boucle principale... Ce ne serait donc pas une boucle for, mais plutôt une boucle while... etc. |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
Merci pour tout ça, je vais tester.
"BigGrizzly" <bigENLEVERCAgrizzly@zoo-loETCAAUSSIgique.org> a écrit dans le message de news:ff34iv$2mt$1@sd-6498.dedibox.fr... > delphi a écrit : >> c'est ça que je n'arrive pas à faire, la fonction qui va bien. >> je ne sais pas comment compter le nombre de mots pour pouvoir compter le >> nombre >> d'espaces autorisés. >> une idée ? > > J'ai du développer ça un certain nombre de fois... mais là, je n'ai plus > l'algo sous la main... > > Si je devais le refaire, je parcourrais la chaîne, et si je tombe sur un > espace, je regarderais le caractère suivant, et si c'est un espace, je le > supprime... jusqu'à ce que le nouveau caractère suivant ne soit pas un > espace, auquel cas je reprendrais ma boucle principale... > > Ce ne serait donc pas une boucle for, mais plutôt une boucle while... > > etc. |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
delphi a écrit :
> Merci pour tout ça, je vais tester. > "BigGrizzly" <bigENLEVERCAgrizzly@zoo-loETCAAUSSIgique.org> a écrit dans > le message de news:ff34iv$2mt$1@sd-6498.dedibox.fr... >> delphi a écrit : >>> c'est ça que je n'arrive pas à faire, la fonction qui va bien. >>> je ne sais pas comment compter le nombre de mots pour pouvoir compter >>> le nombre >>> d'espaces autorisés. >>> une idée ? >> >> J'ai du développer ça un certain nombre de fois... mais là, je n'ai >> plus l'algo sous la main... >> >> Si je devais le refaire, je parcourrais la chaîne, et si je tombe sur >> un espace, je regarderais le caractère suivant, et si c'est un espace, >> je le supprime... jusqu'à ce que le nouveau caractère suivant ne soit >> pas un espace, auquel cas je reprendrais ma boucle principale... >> >> Ce ne serait donc pas une boucle for, mais plutôt une boucle while... >> >> etc. > Et plutôt que supprimer le caractère, en fait, mon algo se contenterait de reconstruire une chaine... à renvoyer en résultat. Je ne sais pas si je suis clair... |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
c'est clair, je pense faire comme ça.
"BigGrizzly" <bigENLEVERCAgrizzly@zoo-loETCAAUSSIgique.org> a écrit dans le message de news:ff35ft$36l$1@sd-6498.dedibox.fr... > delphi a écrit : >> Merci pour tout ça, je vais tester. >> "BigGrizzly" <bigENLEVERCAgrizzly@zoo-loETCAAUSSIgique.org> a écrit dans >> le message de news:ff34iv$2mt$1@sd-6498.dedibox.fr... >>> delphi a écrit : >>>> c'est ça que je n'arrive pas à faire, la fonction qui va bien. >>>> je ne sais pas comment compter le nombre de mots pour pouvoir compter >>>> le nombre >>>> d'espaces autorisés. >>>> une idée ? >>> >>> J'ai du développer ça un certain nombre de fois... mais là, je n'ai plus >>> l'algo sous la main... >>> >>> Si je devais le refaire, je parcourrais la chaîne, et si je tombe sur un >>> espace, je regarderais le caractère suivant, et si c'est un espace, je >>> le supprime... jusqu'à ce que le nouveau caractère suivant ne soit pas >>> un espace, auquel cas je reprendrais ma boucle principale... >>> >>> Ce ne serait donc pas une boucle for, mais plutôt une boucle while... >>> >>> etc. >> > > Et plutôt que supprimer le caractère, en fait, mon algo se contenterait de > reconstruire une chaine... à renvoyer en résultat. Je ne sais pas si je > suis clair... |
|
|
|
#8 |
|
Messages: n/a
Hébergeur: |
delphi a écrit :
> Bonsoir à tous. > j'ai besoin de supprimer des espaces entre les mots dans un champ type > chaine. > je m'explique : > dans un champ type varchar(40) j'ai un ou plusieurs mots séparés par un > ou plusieurs espaces. > je veux conserver un et un seul espace entre chaque mot. > y-a t'il une instruction sql qui fait ça ? > comment puis-je interdire plusieurs espaces (dans un édit) entre chaque > mot ? Dans le OnEditKeyPress, si le caractère tapé est un espace (#32) et que le text est non vide et que le caractère terminal de la chaîne déjà saisie est aussi un #32, on refuse le caractère (Key := #0) Ca doit donner à peu près ça : procedure MonEdit.KeyPress(var Key: Char); begin if (Key = #32) and (length(Text) <> 0) and Text[length(Text)] = #32) then Key := #0; end; JP |
|
![]() |
| Outils de la discussion | |
|
|