Detection de caractère.

[Résolu]
Signaler
Messages postés
20
Date d'inscription
mardi 1 novembre 2005
Statut
Membre
Dernière intervention
25 juillet 2006
-
Messages postés
20
Date d'inscription
mardi 1 novembre 2005
Statut
Membre
Dernière intervention
25 juillet 2006
-
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

Messages postés
207
Date d'inscription
mercredi 5 mars 2003
Statut
Membre
Dernière intervention
29 mars 2013
5
euh...
zcuse
pas pos(mon_texte) mais pos('p',mon_texte) biensûr!
SISI231
Messages postés
207
Date d'inscription
mercredi 5 mars 2003
Statut
Membre
Dernière intervention
29 mars 2013
5
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
Messages postés
207
Date d'inscription
mercredi 5 mars 2003
Statut
Membre
Dernière intervention
29 mars 2013
5
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
Messages postés
20
Date d'inscription
mardi 1 novembre 2005
Statut
Membre
Dernière intervention
25 juillet 2006

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 ?
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
46
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
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
46
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
Messages postés
20
Date d'inscription
mardi 1 novembre 2005
Statut
Membre
Dernière intervention
25 juillet 2006

Merci pour vos reponses.
Messages postés
20
Date d'inscription
mardi 1 novembre 2005
Statut
Membre
Dernière intervention
25 juillet 2006

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.
Messages postés
207
Date d'inscription
mercredi 5 mars 2003
Statut
Membre
Dernière intervention
29 mars 2013
5
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
Messages postés
20
Date d'inscription
mardi 1 novembre 2005
Statut
Membre
Dernière intervention
25 juillet 2006

Hum, marche pas:



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



erreur: Types incompatibles



Merci pour la methode append
Messages postés
207
Date d'inscription
mercredi 5 mars 2003
Statut
Membre
Dernière intervention
29 mars 2013
5
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
Messages postés
20
Date d'inscription
mardi 1 novembre 2005
Statut
Membre
Dernière intervention
25 juillet 2006

Merci bcp.