PHWinfo banniere

Titres
PORTAIL ANNUAIRE ARTICLES COMPARATEUR HÉBERGEURS DEVIS FORUMS RÉDUCTEUR D'URL
Précédent   PHWinfo > Autres forums > Forum Programmation & Conception > nzn.fr.delphi > Espaces dans un édit
S'inscrire FAQ Membres Recherche Messages du jour Marquer les forums comme lus
Espaces dans un édit

Réponse
 
LinkBack Outils de la discussion
Vieux 16/10/2007, 18h26   #1
delphi
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Espaces dans un édit

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
?

  Réponse avec citation
Vieux 16/10/2007, 20h22   #2
BigGrizzly
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Espaces dans un édit

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 ?


  Réponse avec citation
Vieux 16/10/2007, 20h43   #3
delphi
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Espaces dans un édit

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 ?
>
>


  Réponse avec citation
Vieux 16/10/2007, 20h48   #4
BigGrizzly
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Espaces dans un édit

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.
  Réponse avec citation
Vieux 16/10/2007, 20h51   #5
delphi
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Espaces dans un édit

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.


  Réponse avec citation
Vieux 16/10/2007, 21h04   #6
BigGrizzly
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Espaces dans un édit

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...
  Réponse avec citation
Vieux 16/10/2007, 21h20   #7
delphi
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Espaces dans un édit

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...


  Réponse avec citation
Vieux 16/10/2007, 22h01   #8
JP Passama
Aucun Avatar
 
Messages: n/a
Hébergeur:
Par défaut Re: Espaces dans un édit

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
  Réponse avec citation
Réponse


Outils de la discussion

Règles de messages
Vous ne pouvez pas créer de nouvelles discussions
Vous ne pouvez pas envoyer des réponses
Vous ne pouvez pas envoyer des pièces jointes
Vous ne pouvez pas modifier vos messages

Les balises BB sont activées : oui
Les smileys sont activés : oui
La balise [IMG] est activée : oui
Le code HTML peut être employé : non
Trackbacks are oui
Pingbacks are oui
Refbacks are oui


Fuseau horaire GMT +1. Il est actuellement 13h18.


Édité par : vBulletin® version 3.7.2
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.2.0 RC5 Tous droits réservés.
Version française #16 par l'association vBulletin francophone
PHWinfo est un site Éducation Sans Frontières
Ad Management by RedTyger
©Tous droits réservés par les parties respectives
Page generated in 0,13137 seconds with 16 queries