Afficher une variable

[Résolu]
Signaler
Messages postés
4
Date d'inscription
mardi 29 septembre 2009
Statut
Membre
Dernière intervention
14 octobre 2009
-
Messages postés
3792
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
-
Salut à toutes et à tous.

Un problème est venu perturber mon boulot...

Mon programme est censé calculer 2 variables et lire et tester la réponse de l'utilisateur. Il s'agit d'un jeu de calcul mental comme le fameux jeu sur la Nintendo DS.

Mon but est d'indiquer lors d'une erreur de l'utilisateur le 'ShowMessage' : 'Incorrect la bonne réponse été : '

J'aimerais que la bonne réponse (variable1+variable2) s'affiche à la suite de la phrase citée ci-dessus et le tout dans le fameux 'ShowMessage'

J'espère n'avoir pas été trop nébuleux !

Merci à vous :)

PS : Voici le code du calcul.

procedure TForm1.btnverifierClick(Sender: TObject);
var N1,N2,Result,userres : integer;

begin
N1:=StrToInt(edtrandom1.Text);
N2:=StrToInt(edtrandom2.Text);
Result:=N1+N2;
userres:=StrToInt(edtreponse.Text);

if userres = (N1+N2) then
ShowMessage ('Correct !');

if userres <> (N1+N2) then
ShowMessage ('Incorrect ! La réponse été : ');

edtreponse.Clear;
edtrandom1.Clear;
edtrandom2.Clear;
end;

8 réponses

Messages postés
3792
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
9
Hmm, un peu désordonné. Voilà comment tu pourrais l'écrire :

procedure TForm1.btnverifierClick(Sender: TObject); 
var 
 N1, N2, ValidRes, UserRes: Integer; 
begin 
 N1 := StrToIntDef(edtrandom1.Text, 0);
 N2 := StrToIntDef(edtrandom2.Text, 0);
 ValidRes := N1 + N2; 
 UserRes := StrToIntDef(edtreponse.Text, -1); 
 if UserRes = -1 then ShowMessage('Le nombre entré est incorrect !') else
  if UserRes = ValidRes then ShowMessage('Correct !')
   else ShowMessage(Format('Incorrect ! La bonne réponse était : %d !', [ValidResult]));
 
 edtreponse.Clear; 
 edtrandom1.Clear; 
 edtrandom2.Clear; 
end;


- Ca permet de réagir correctement si l'utilisateur a entré "lol" au lieu de mettre un nombre, en disant "nombre incorrect". Voir l'aide de Delphi sur la méthode Format (très documentée) et sur StrToIntDef (mieux que StrToInt !).
- Ne pas nommer une variable "Result", sinon tu seras embrouillé quand tu vas faire des fonctions. Préférer "Res" ou "Resultat".
- Dans ton code, tu définissais "Result" mais tu ne l'utilisais jamais (à chaque fois tu refaisais l'addition).
- entre nous, utilise plutôt MessageDlg pour afficher des messages. ShowMessage c'est vraiment très moche, et ce n'est pas modal (l'utilisateur peut toujours cliquer derrière ...). Voir l'aide de Delphi sur MessageDlg.

J'espère t'avoir aidé

Cordialement, Bacterius !
Messages postés
3792
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
9
Hmm on dirait que la balise code n'accepte plus les majuscules ? Ca ne change rien ... mais bon.

Cordialement, Bacterius !
Messages postés
4
Date d'inscription
mardi 29 septembre 2009
Statut
Membre
Dernière intervention
14 octobre 2009

Merci beaucoup pour ton aide !!

Si je suis désordonné c'est parce que c'est mon tout premier cours de Delphi donc je n'ai pas encore appris toutes les subtilités.

Merci
Messages postés
3792
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
9
Il faut bien apprendre

Cordialement, Bacterius !
Messages postés
4
Date d'inscription
mardi 29 septembre 2009
Statut
Membre
Dernière intervention
14 octobre 2009

Une autre petite question :

le "%d" à la fin de la phrase : il sert à marquer un espace entre la fin de la phrase et la fin du "!" final ?
Messages postés
3792
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
9
Non en fait c'est un indice de formatage. Dans mon exemple, le premier argument envoyé à la fonction Format (validres) est inséré dans la chaîne à la place de %d.

Exemples :

Format('Salut !', ['qqch']) => 'Salut !';
Format('%d', [Nombre]) => renvoie le nombre
Format('%s', [Nombre]) => renvoie une erreur car %s attend une chaîne et Nombre n'est pas une chaîne.

Mais une documentation plus complète est disponible si tu sélectionnes "Format" dans ton code et que tu appuies sur F1.

Cordialement, Bacterius !
Messages postés
4
Date d'inscription
mardi 29 septembre 2009
Statut
Membre
Dernière intervention
14 octobre 2009

Je n'ai rien dit, l'aide de Delphi est comme tu le dit très détaillée..

Merci encore énormément à toi
Messages postés
3792
Date d'inscription
samedi 22 décembre 2007
Statut
Membre
Dernière intervention
3 juin 2016
9
De rien, pense à cliquer sur Réponse Acceptée

Cordialement, Bacterius !