Problème de prog avec Repeat

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)
A voir également:

4 réponses

du crétin, point te moquer tu ne dois
 
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.
0
The_Companion_Cube Messages postés 13 Statut Membre
 
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 =)
0
du crétin, point te moquer tu ne dois
 
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)
0
The_Companion_Cube Messages postés 13 Statut Membre
 
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
0