Verifier une string = Alphanumerique ?

Résolu
ELCouz
Messages postés
135
Date d'inscription
jeudi 22 mars 2007
Statut
Membre
Dernière intervention
25 juillet 2008
- 18 mars 2008 à 18:33
ELCouz
Messages postés
135
Date d'inscription
jeudi 22 mars 2007
Statut
Membre
Dernière intervention
25 juillet 2008
- 22 mars 2008 à 19:11
Bonjour,

Quelqu'un aurait un conseil pour faire une function qui verifie si la string est alphanumerique ou non ?

et retourne true or false,  false si la string contient des trucs autre que [0-9 ,a-z et A-Z]

Merci beaucoup de votre aide !

ps: je connais le truc du keydown et regarder la touche enfoncer mais moi jveut verifier un TEdit de facon a eviter qun malin copie coller des symboles afin de tout faire planter ;)

Bonne journee !

Laurent

14 réponses

Cirec
Messages postés
3832
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
17 février 2022
48
19 mars 2008 à 00:15
Regarde bien le code ... on peut avoir un controle sur la chaine de caractères qui est sur le point d'être collé.

Cette quoi cette manille quand on vous dit qu'il y a tout dedans faites au moins l'effort de regarder le code !!!!!
ça ne figure pas dans la description puisque cette possibilité a été ajouté par la suite

Titre du code source  CONTROLER UN "COPIER/COLLER" DANS UN TEDIT
Il peut entre autre Interdir un Copier/Coller mais pas seulement

 
@+
Cirec

<hr siz="" />
3
ELCouz
Messages postés
135
Date d'inscription
jeudi 22 mars 2007
Statut
Membre
Dernière intervention
25 juillet 2008

21 mars 2008 à 23:07
Bonjour,

J'étais interesser apropos du truc de gestion de copier coller mais jme suis arranger quelque chose de plus simple encore et de TRES efficace (et flexible)...

sur un bouton:

if edit1.Text <> regex(edit1.Text,'\w+') then showmessage('pfff ta mit autre chose que des chiffre ou des numeros !!!');
else toncodeaexecuter_car_tout_est_ok;

la function regex:

function Regex (const InputString,Expression: string) : string;
 var
  r : TRegExpr;
 begin
  r := TRegExpr.Create;
  try
     r.Expression := Expression;
     if r.Exec (InputString)
      then Result := r.Match [0];
    finally r.Free;
   end;
end;

elle utilise une composante (non-vcl) qui se nomme TRegExpr... cest le truc a utiliser pour faire du regular expression avec Delphi ... en plus ce truc est gratuit !!!

http://regexpstudio.com/TRegExpr/TRegExpr.html

Bref, jai poster le code pour ceux qui aurais ete interesser par cette autre solution !

Bonne journee !

Laurent
3
cs_cantador
Messages postés
4720
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
31 juillet 2021
14
18 mars 2008 à 21:56
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if  not (key in ['a'..'z', 'A'..'Z', '0'..'9']) then
key := #0;
end;

cantador
0
ELCouz
Messages postés
135
Date d'inscription
jeudi 22 mars 2007
Statut
Membre
Dernière intervention
25 juillet 2008

18 mars 2008 à 23:20
Bonjour,

Je ne veut pas interdire un copier coller je veux juste empecher que quelque copy paste des informations errones...
C-a-d verifier l'information seulement que lorsque jappuie sur le boutton OK.

Empecher un copier coller ne fera que limiter mon programme qui «deal» avec beaucoup de donnee redondante (Numero de reperage de colis provenant du web)... sa serais tannant pour lutilisateur de rentrer les numero de 10 a 30 caracteres a la main!

@cantador
et si je fait clic droit sur le champ et puis coller ? ;)

Merci de votre aide !

Laurent
0

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

Posez votre question
ELCouz
Messages postés
135
Date d'inscription
jeudi 22 mars 2007
Statut
Membre
Dernière intervention
25 juillet 2008

18 mars 2008 à 23:24
ReBonjour,

J'ai penser a une function qui loop (pour la longueur de la string) et verifie caractere par caratere si elle contient seulement des char entre [0-9 ,a-z et A-Z]....

Une idee ?

Merci

Laurent
0
Cirec
Messages postés
3832
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
17 février 2022
48
19 mars 2008 à 00:18
Regarde les procedures OnPaste dans UMain.pas et tu comprendra que tu as un controle totale sur ce qui est collé !

 
@+
Cirec

<hr siz="" />
0
ELCouz
Messages postés
135
Date d'inscription
jeudi 22 mars 2007
Statut
Membre
Dernière intervention
25 juillet 2008

19 mars 2008 à 23:29
Merci javais lu trop vite ton post sur la gestion du copier coller

Bonne journee !

Laurent
0
Cirec
Messages postés
3832
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
17 février 2022
48
20 mars 2008 à 00:12
Si la réponse te convient n'oublie pas de clique sur : Réponse Acceptée
Merci

 
@+
Cirec

<hr siz="" />
0
cs_cantador
Messages postés
4720
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
31 juillet 2021
14
21 mars 2008 à 18:56
Si tu ne veux pas utiliser la technique à propos du copier coller..
N'oublie pas qu'il te faudra bien à un moment déclencher une validation et cette dernière pourra à cet instant vérifier le contenu du TEdit et donc l'autoriser ou non.
et dans le cas où la donnée n'est pas correcte, on peut même vider le TEDIT et en informer l'utilisateur et attendre une nouvelle entrée.

cantador
0
cs_cantador
Messages postés
4720
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
31 juillet 2021
14
22 mars 2008 à 12:59
Intéressant mais rares néanmoins 
sont les applis ayant un souci récurent d'intégrité de la saisie
et quelquefois il est plus simple d'écrire quelques lignes de code plutôt que d'introduire une unité supplémentaire traitant TOUS les cas pouvant se présenter.

Tout dépend des besoins..

cantador
0
Cirec
Messages postés
3832
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
17 février 2022
48
22 mars 2008 à 15:48
Mouais,

ça fait pas très propre tous ça !!!

Avecta solution : l'utilisateur peut rentrer des données érronnées et il en est averti qu'au moment ou il appuie sur le bouton ...

Alors que le code que je te proposais permet d'intervenir avant que le caractère ou la chaine de caractères ne soit affiché dans le TEdit et cela en toute transparence pour l'utilisateur.

Et tu peux même faire ceci:

Admetton que l'utilisateur doit entrer un numéro de téléphone au format :
"xx-xx-xx-xx-xx" et qu'il colle la chaine suivante "Tel : 01/02/03/04/05" avec mon code l'utilisateur verra s'afficher : "01-02-03-04-05" et le texte dans le presse-papier lui reste inchangé ce qui veut dire qu'un coller dans un autre TEdit (non controlé) s'affichera : "Tel : 01/02/03/04/05". Du coup l'utilisateur n'aura pas besoin de re-saisir les données, aucune erreur ne vient perturber le cour des choses.

Vous êtes quand même marrant ... le problème du copier/coller est un problème récurant, que l'on trouve sur beaucoup de forum, qui est resté sans solution pendant très longtemps et maintenant qu'une solution existe (flexible, propre dont le code et la mise en oeuvre sont d'une simplicité enfantine) vous repartez dans des bricolages douteux !!!! j'avoue que j'ai beaucoup de mal à comprendre votre logique.

 
@+
Cirec

<hr siz="" />
0
cs_cantador
Messages postés
4720
Date d'inscription
dimanche 26 février 2006
Statut
Modérateur
Dernière intervention
31 juillet 2021
14
22 mars 2008 à 16:57
Oui cirec (il a encore trouvé..)
Il faudra quand même prévoir un stockage des options prises avec un contrôle administrateur.

cantador
0
ELCouz
Messages postés
135
Date d'inscription
jeudi 22 mars 2007
Statut
Membre
Dernière intervention
25 juillet 2008

22 mars 2008 à 19:07
J'utilisais deja l'unité TRegExpr bien avant donc pour moi , il n'y a pas grand chose qui se sont rajouter dans mon code...
0
ELCouz
Messages postés
135
Date d'inscription
jeudi 22 mars 2007
Statut
Membre
Dernière intervention
25 juillet 2008

22 mars 2008 à 19:11
PS: Cirec jvais lutiliser ton code promis !!...quand je ferais un autre programme ou jaurais besoin dune verification des donnees
0