Detection de caractère.

Résolu
tux22 Messages postés 20 Date d'inscription mardi 1 novembre 2005 Statut Membre Dernière intervention 25 juillet 2006 - 5 janv. 2006 à 21:22
tux22 Messages postés 20 Date d'inscription mardi 1 novembre 2005 Statut Membre Dernière intervention 25 juillet 2006 - 7 janv. 2006 à 21:15
Salut a tous,



Je voudrais savoir le procédé pour que mon aplication detecte des
caractères placés dans un TEdit ou plus generale dans les zones de
texte. Et savoir si ce procédé et adaptable a chaque demande de
caractère a trouver. Je souhaite savoir si il y a presence de certains
caractere dans les certains que taperas les utilisateurs.

Si qqun connait la reponse a ma question, pourait-il expliquer les
diferentes etapes car j'ai trouver sur google des codes pour faire de
la recherche de caractere mais sans explication et je n'y comprend rien
et mon but et de comprendre avant tout.

Merci d'avance.

12 réponses

sisi231 Messages postés 207 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 29 mars 2013 5
5 janv. 2006 à 21:59
euh...
zcuse
pas pos(mon_texte) mais pos('p',mon_texte) biensûr!
SISI231
3
sisi231 Messages postés 207 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 29 mars 2013 5
5 janv. 2006 à 21:32
lu

Pour récupérer le texte de Tedit1 :

mon_texte := edit1.text;

Pour récupérer le caractère n° 3 de mon_texte :

mon_caractere := mon_texte[3];

pour que ça marche il faut que tu déclare mon_texte et mon_caractere, pour-ce ajoute juste avant le mot begin :
mon_texte :string;
mon_caractere : char;

Bonne prog !
SISI231
0
sisi231 Messages postés 207 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 29 mars 2013 5
5 janv. 2006 à 21:57
Excuse j'ai lu trop vite : tu veux faire de la recherche d'un certain caractère ?





exemple :


mon_texte :string;
i : integer;


i := pos (mon_texte);

if i =0 then
showmessage ('ya pas de p dans mon_texte !')
else
showmessage('ya au moins un p dans mon texte et le premier " p " est le caractère n°'+inttostr(i)+' de mon_texte');

SISI231
0
tux22 Messages postés 20 Date d'inscription mardi 1 novembre 2005 Statut Membre Dernière intervention 25 juillet 2006
5 janv. 2006 à 22:41
Merci à toi de rep si vite.

Et aussi:

Je dis que je veux absolument 4 caractère (4fois le meme), comment puis-je faire pour quil regarde si il y a bien les 4x ?
0

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

Posez votre question
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
6 janv. 2006 à 01:31
Salut,
si c'est 4 fois le même caractère à la suite tu peux faire ceci :
pos('pppp', mon_texte)

si non tu peux essayer ça :
Function NombredeFois(aChar : Char; aStr : String): Integer;
Var I : Integer;
Begin
Result := 0;
For I : = 1 To Length(aStr) Do
If aStr[I] = aChar Then Inc(Result)
End;


et tu peux faire par exemple comme ceci :
If NombredeFois('p', Edit1.Text) = 4 Then ....

@+
Cirec
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
6 janv. 2006 à 01:48
petite précision, dans NombredeFois(aChar : Char; aStr : String): Integer;
aChar est CaseSensitive c'est a dire que 'p' n'est pas égale à 'P'

si tu ne veux pas faire la différence entre majuscule et minuscule il faut modifier le code comme suit :

Function NombredeFois(aChar : Char; aStr : String): Integer;
Var I : Integer;
Begin
Result := 0;
For I : = 1 To Length(aStr) Do
If UpCase(aStr[I]) = UpCase(aChar) Then Inc(Result)
End;



@+
Cirec
0
tux22 Messages postés 20 Date d'inscription mardi 1 novembre 2005 Statut Membre Dernière intervention 25 juillet 2006
6 janv. 2006 à 18:36
Merci pour vos reponses.
0
tux22 Messages postés 20 Date d'inscription mardi 1 novembre 2005 Statut Membre Dernière intervention 25 juillet 2006
7 janv. 2006 à 14:25
J'ai encore une question:

Je veux dire que: si le caractere n°3 de mon_texte est un . (par exemple) alors on continu la procedure sinon end.

J'ai utiliser ce code mais j'ai une erreure et je comprend pas trop:

mon_texte : String; mon_caractere : Char;



if (mon_caractere := mon_texte[3]='.') then

....suite de la procedure....



Else

Memo1.Lines.Add(' erreur')



Ce code ne marche pas, pourquoi ?

Merci d'avance.
0
sisi231 Messages postés 207 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 29 mars 2013 5
7 janv. 2006 à 14:29
if (mon_caractere := mon_texte[3]='.') then

>> met un simple = (symbole d'égalité) et non le symbole d'affectation :=

Deuxio : tu devrais prendre l'habitude d'utiliser la méthode append plutôt que add car contrairement à cette dernière elle n'a pas de valeur de retour.

SISI231
0
tux22 Messages postés 20 Date d'inscription mardi 1 novembre 2005 Statut Membre Dernière intervention 25 juillet 2006
7 janv. 2006 à 15:23
Hum, marche pas:



if (mon_caractere = mon_texte='.') then...



erreur: Types incompatibles



Merci pour la methode append
0
sisi231 Messages postés 207 Date d'inscription mercredi 5 mars 2003 Statut Membre Dernière intervention 29 mars 2013 5
7 janv. 2006 à 18:26
ah oui : y'avait une deuxième erreur que je n'avais pas vu :


il ne faut pas mettre 2 égal dans une même expression en Delphi (contrairement au C), écrit donc :

mon_caractere := mon_texte[3];
if (mon_caractere='.') then

SISI231
0
tux22 Messages postés 20 Date d'inscription mardi 1 novembre 2005 Statut Membre Dernière intervention 25 juillet 2006
7 janv. 2006 à 21:15
Merci bcp.
0
Rejoignez-nous