Problème de prog avec Repeat
The_Companion_Cube
Messages postés
13
Statut
Membre
-
The_Companion_Cube Messages postés 13 Statut Membre -
The_Companion_Cube Messages postés 13 Statut Membre -
Bonjour, j'ai un problème avec un code qui me fait un loop à l'infinie. J'ai commencé à étudier en informatique de gestion, je suis en première session actuellement. J'essaie, pour le plaisir, de reproduire un script avec Delphi 2005 qui ressemble au site web www.aperturescience.com car je suis un grand fan de Portal =D
Donc, voici mon code:
Var
LOG, NU, MP : String[50];
M : Char;
C : Integer;
begin
Writeln;
Write('>');
Readln(LOG);
If LOG = 'Login' Then
Repeat
Begin
Write('Username> ');
Read(NU);
End
Until NU = ('CJohnson');
If NU = 'CJohnson' Then
Repeat
Begin
Write('Password>');
Read(MP);
End
Until MP = 'Portal';
[...]
end.
Quand je le teste, j'écrie le username et s'il détecte que la condition est fausse, je tombe en loop infinie. Par contre, si la condition est vraie pour le premier Until, le programme me fait tomber un loop infinie avec le mot 'Password>'. Quel est mon problème? (PS: Je suis en première session au cégep donc, je ne connais pas encore la programmation objet ou quoi que ce soit. =S)
Donc, voici mon code:
Var
LOG, NU, MP : String[50];
M : Char;
C : Integer;
begin
Writeln;
Write('>');
Readln(LOG);
If LOG = 'Login' Then
Repeat
Begin
Write('Username> ');
Read(NU);
End
Until NU = ('CJohnson');
If NU = 'CJohnson' Then
Repeat
Begin
Write('Password>');
Read(MP);
End
Until MP = 'Portal';
[...]
end.
Quand je le teste, j'écrie le username et s'il détecte que la condition est fausse, je tombe en loop infinie. Par contre, si la condition est vraie pour le premier Until, le programme me fait tomber un loop infinie avec le mot 'Password>'. Quel est mon problème? (PS: Je suis en première session au cégep donc, je ne connais pas encore la programmation objet ou quoi que ce soit. =S)
A voir également:
- Problème de prog avec Repeat
- Robot prog - Télécharger - Édition & Programmation
- Wireless-n wifi repeater mot de passe - Forum WiFi
- Mot de passe sur repeteur wireless N - Forum WiFi
- Wireless N wifi repeater ✓ - Forum WiFi
- Clear prog - Télécharger - Sécurité
4 réponses
Salut
J'ai pas mon Delphi sous la main donc je peux pas "vérifier" ton code.
Néanmoins à la relecture je ne trouve pas de raison à boucler comme tu le décris (surtout que la boucle de lecture du passworxd est un copier/coller de celle du userid)
la seule remarque que l'on peut faire est qu'entre repeat est until, on n'est pas obligé d'avoir un bloc begin...end.
tu as tout a fait le droit d'écrire repeat write('...>'; readln(x) until (x='Ça');
je teste ça tout à l'heure et je repasse.
J'ai pas mon Delphi sous la main donc je peux pas "vérifier" ton code.
Néanmoins à la relecture je ne trouve pas de raison à boucler comme tu le décris (surtout que la boucle de lecture du passworxd est un copier/coller de celle du userid)
la seule remarque que l'on peut faire est qu'entre repeat est until, on n'est pas obligé d'avoir un bloc begin...end.
tu as tout a fait le droit d'écrire repeat write('...>'; readln(x) until (x='Ça');
je teste ça tout à l'heure et je repasse.
Finalement, pas besoin de m'aider, j'ai réglé le problème en changeant la syntaxe et ça a marché comme je le voulais, merci quand même de l'aide =)
re
J'ai volontairement saisi un mauvais nom et j'ai eu "la boucle de la mort" pour le nom comme celle que tu as eu pour le password
le pb vient du read : il doit attendre un truc x ou y qui ne vient pas (dans les vieilles versions de TP il y avait de jolis warning sur les différences entre read et readln... c'est toujours d'actualité :D)
utilise à la place readln (en plus, le curseur passe à la ligne, c'est plus joli)
J'ai volontairement saisi un mauvais nom et j'ai eu "la boucle de la mort" pour le nom comme celle que tu as eu pour le password
le pb vient du read : il doit attendre un truc x ou y qui ne vient pas (dans les vieilles versions de TP il y avait de jolis warning sur les différences entre read et readln... c'est toujours d'actualité :D)
utilise à la place readln (en plus, le curseur passe à la ligne, c'est plus joli)
Justement, tu as raison, c'étais une donnée qui lisait mal et le repeat ne fonctionnait pas à cause d'une erreur de syntaxe. J'ai changé et enlevé le repeat du mot de passe et je l'ai mis hors du repeat du username et maintenant, ça marche parfaitement. J'ai pû finir mon programme et je suis super fière de moi =D