Afficher une variable

Résolu
showmessage Messages postés 4 Date d'inscription mardi 29 septembre 2009 Statut Membre Dernière intervention 14 octobre 2009 - 29 sept. 2009 à 23:42
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 - 30 sept. 2009 à 09:56
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

Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
30 sept. 2009 à 01:28
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 !
3
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
30 sept. 2009 à 01:29
Hmm on dirait que la balise code n'accepte plus les majuscules ? Ca ne change rien ... mais bon.

Cordialement, Bacterius !
3
showmessage Messages postés 4 Date d'inscription mardi 29 septembre 2009 Statut Membre Dernière intervention 14 octobre 2009
30 sept. 2009 à 09:24
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
3
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
30 sept. 2009 à 09:27
Il faut bien apprendre

Cordialement, Bacterius !
3

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

Posez votre question
showmessage Messages postés 4 Date d'inscription mardi 29 septembre 2009 Statut Membre Dernière intervention 14 octobre 2009
30 sept. 2009 à 09:30
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 ?
3
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
30 sept. 2009 à 09:37
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 !
3
showmessage Messages postés 4 Date d'inscription mardi 29 septembre 2009 Statut Membre Dernière intervention 14 octobre 2009
30 sept. 2009 à 09:40
Je n'ai rien dit, l'aide de Delphi est comme tu le dit très détaillée..

Merci encore énormément à toi
3
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
30 sept. 2009 à 09:56
De rien, pense à cliquer sur Réponse Acceptée

Cordialement, Bacterius !
3
Rejoignez-nous