Saisir une chaîne uniquement par .........
Fermé
MoNdEtYnOtEcK
Messages postés
49
Date d'inscription
samedi 21 avril 2012
Statut
Membre
Dernière intervention
2 novembre 2013
-
Modifié par MoNdEtYnOtEcK le 22/02/2013 à 01:01
MoNdEtYnOtEcK Messages postés 49 Date d'inscription samedi 21 avril 2012 Statut Membre Dernière intervention 2 novembre 2013 - 25 févr. 2013 à 22:25
MoNdEtYnOtEcK Messages postés 49 Date d'inscription samedi 21 avril 2012 Statut Membre Dernière intervention 2 novembre 2013 - 25 févr. 2013 à 22:25
A voir également:
- Saisir une chaîne uniquement par .........
- Rech. ou saisir l'url - Guide
- Chaine tnt gratuite sur mobile - Guide
- Nouvelle chaîne tnt gratuite 2024 - Accueil - TV & Vidéo
- Plus de chaine tv - Guide
- Chaine radio - Télécharger - Médias et Actualité
3 réponses
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
22 févr. 2013 à 14:46
22 févr. 2013 à 14:46
Salut MoNdEtYnOtEcK,
Ce que tu veux faire n'est pas clair.
Peux-tu préciser, stp.
Sinon, voilà des pistes.
1.
Est-ce que tu veux c'est : demander à l'utilisateur d'un programme en mode console de saisir au clavier une chaîne en n'acceptant sa saisie que s'il ne presse que des lettres majuscules et/ou des chiffres et la touche Enter ?
Si c'est bien cela, il faudrait utiliser ReadKey en n'acceptant la saisie d'un caractère que si la valeur du caractère (fonction ord) est comprise entre celles de A et Z et entre 0 et 9 (compris) https://www.freepascal.org/docs-html/rtl/crt/readkey.html en faisant un echo à l'écran, et en stockant la valeur dans une chaîne.
2.
Autrement, tu peux utiliser un readln et vérifier a posteriori, que les caractères de la chaîne saisie sont "acceptables".
A toi de jouer :-)
Bon courage,
Dal
Ce que tu veux faire n'est pas clair.
Peux-tu préciser, stp.
Sinon, voilà des pistes.
1.
Est-ce que tu veux c'est : demander à l'utilisateur d'un programme en mode console de saisir au clavier une chaîne en n'acceptant sa saisie que s'il ne presse que des lettres majuscules et/ou des chiffres et la touche Enter ?
Si c'est bien cela, il faudrait utiliser ReadKey en n'acceptant la saisie d'un caractère que si la valeur du caractère (fonction ord) est comprise entre celles de A et Z et entre 0 et 9 (compris) https://www.freepascal.org/docs-html/rtl/crt/readkey.html en faisant un echo à l'écran, et en stockant la valeur dans une chaîne.
2.
Autrement, tu peux utiliser un readln et vérifier a posteriori, que les caractères de la chaîne saisie sont "acceptables".
A toi de jouer :-)
Bon courage,
Dal
voici une fonction qui fait le test de saisie !
function verif(ch:string):boolean;
var
i:integer;
begin
i:=1;
while(upcase(ch[i]) in ['A'..'Z','0'..'9']) and (i<= length(ch)) do
inc(i); { i:=i+1;}
verif:=i>=length(ch);
end;
et voici la procédure saisie
procedure saisie(var ch:string);
begin
repeat
write('Taper une chaine: ');
readln(ch);
until(verif(ch));
end;
function verif(ch:string):boolean;
var
i:integer;
begin
i:=1;
while(upcase(ch[i]) in ['A'..'Z','0'..'9']) and (i<= length(ch)) do
inc(i); { i:=i+1;}
verif:=i>=length(ch);
end;
et voici la procédure saisie
procedure saisie(var ch:string);
begin
repeat
write('Taper une chaine: ');
readln(ch);
until(verif(ch));
end;
MoNdEtYnOtEcK
Messages postés
49
Date d'inscription
samedi 21 avril 2012
Statut
Membre
Dernière intervention
2 novembre 2013
Modifié par MoNdEtYnOtEcK le 24/02/2013 à 22:14
Modifié par MoNdEtYnOtEcK le 24/02/2013 à 22:14
Salut tous le monde,
Merci pour toi Dal et xman, j'ai trouver la solution :D
=> Pour dal, mon besoin c'est exactement ta hypothèse 1.
=> Pour xman, c'est presque que-ce que je fait.
La solution :
Function verif ( ch : string ) : boolean ;
var
v : boolean ;
i : integer ;
begin
v := vrai ;
i := 1 ;
while ( i <= length(ch)) and ( v ) do
if (( not ( ch[i] in ['A'..'F','0'..'9'] )) = true ) then
v := faux
else
i := i + 1 ;
verif := v ;
end ;
begin
repeat
writeln ( " Taper une chaine : " ) ;
read ( ch ) ;
until ( verif ( ch ) ) ;
end.
Merci pour toi Dal et xman, j'ai trouver la solution :D
=> Pour dal, mon besoin c'est exactement ta hypothèse 1.
=> Pour xman, c'est presque que-ce que je fait.
La solution :
Function verif ( ch : string ) : boolean ;
var
v : boolean ;
i : integer ;
begin
v := vrai ;
i := 1 ;
while ( i <= length(ch)) and ( v ) do
if (( not ( ch[i] in ['A'..'F','0'..'9'] )) = true ) then
v := faux
else
i := i + 1 ;
verif := v ;
end ;
begin
repeat
writeln ( " Taper une chaine : " ) ;
read ( ch ) ;
until ( verif ( ch ) ) ;
end.
[Dal]
Messages postés
6194
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
11 octobre 2024
1 092
25 févr. 2013 à 12:07
25 févr. 2013 à 12:07
Si c'est l'hypothèse 1., alors cela serait plutôt :
Pour bien faire, il faudrait aussi gérer la touche "Backspace" pour permettre la suppression de texte saisi. Mais, c'est un peu compliqué.
Dal
program test; uses Crt; var ch : Char; st : String; begin ClrScr; write('Veuillez taper un nombre hexadécimal, ' + 'c''est à dire, une chaîne de caractères ' + 'composée uniquement par des chiffres et ' + 'des lettres majuscules dans l''intervalle ' + '[ ''A'' .. ''F'' ]]: '); st := ''; repeat ch := ReadKey; if (ch in ['A'..'F','0'..'9']) then begin st := st + ch; write(ch); end; until (ch = #13) and (st <> ''); writeln; writeln('Vous avez tapé : ' + st); ReadKey; end.
Pour bien faire, il faudrait aussi gérer la touche "Backspace" pour permettre la suppression de texte saisi. Mais, c'est un peu compliqué.
Dal
MoNdEtYnOtEcK
Messages postés
49
Date d'inscription
samedi 21 avril 2012
Statut
Membre
Dernière intervention
2 novembre 2013
25 févr. 2013 à 22:25
25 févr. 2013 à 22:25
Merci Dal pour ton aide :D