problème de comptage - Delphi/Pascal - Programmation
Marsh Posté le 11-03-2007 à 12:24:40
Salut
normal que t'ai des valeurs bizarre pour le programme tu n'initialise pas c
comme je te disait dans ton précédent post (je me suis planté d'ailleurs...), c doit être déclaré pour l'ensemble des procédures
t'a beau faire C:=0; dans procedure BtnNjClick, ce n'est valable QUE pour cette procédure, et comme elle n'est pas initialisée dans BtnVrClick, il te donne n'importe quoi
tu l'a pourtant fait pour x
pour être utilisée dans toute l'appli :
unit Unitdevin;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, jpeg, ExtCtrls;
type
TForm1 = class(TForm)
BtnNj: TButton;
BtnLc: TButton;
BtnQuitter: TButton;
LbCm: TLabel;
EditCm: TEdit;
BtnVr: TButton;
ListR: TListBox;
Label1: TLabel;
LbRt: TLabel;
Image1: TImage;
procedure BtnNjClick(Sender: TObject);
procedure BtnLcClick(Sender: TObject);
procedure BtnQuitterClick(Sender: TObject);
procedure BtnVrClick(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
var x,c:integer;//------ICI------
implementation
{$R *.DFM}
procedure TForm1.BtnNjClick(Sender: TObject);
begin
randomize;
x:=random(100-0+1);
ListR.Items.Clear();//éfface la listbox a chaque fois que l'on recré un chiffre
LbRt.Caption:=('');
c:=0;
end;
procedure TForm1.BtnLcClick(Sender: TObject);
begin
ShowMessage('le nombre mystérieux est '+IntToStr(x));
end;
procedure TForm1.BtnQuitterClick(Sender: TObject);
begin
if(messageDlg('voulez-vous vraiment quitter le jeu?',mtconfirmation,[mbYes,mbNo],0)=mrYes)then
close;
end;
procedure TForm1.BtnVrClick(Sender: TObject);
var m,NbrLignes,i:integer;//pas de c
var ligne:string;
var trouve:boolean;
begin
M:=StrToInt(EditCm.Text);
c:=c+1;
// pas besoin de begin /end pour faire juste un instruction
if (M<0)or(M>100)then ShowMessage('le chiffre mystérieux est compris entre 0 et 100');
if M=x then LbRt.Caption:=IntToStr(c)
else
if M>x then
begin
ligne:=''+EditCm.Text+''+ ' est trop grand';
NbrLignes:=ListR.Items.Count;
Trouve:=False;
for i:=0 to(NbrLignes-1)do
begin
if(Ligne=ListR.Items[i])Then
Trouve:=True
end;
if(trouve=False)then
ListR.Items.Add(Ligne);
end
else
begin
ligne:=''+EditCm.Text+''+ ' est trop petit';
ListR.Items.Add(ligne);
end;
EditCm.Text:='';//pour éffacer le edite
end;
end.
Marsh Posté le 11-03-2007 à 13:11:35
j'ai retiré c que j avais déclarer dans nouveau jeu et ca marche merci!
Marsh Posté le 11-03-2007 à 11:39:00
voici mon programme
j'ai mis c:=0 lorsque j appuie sur le bouton ''BtnNj'' et j'ai mis c:=1 lorsque je vérifie ma réponse en appuyant sur le bouton ''BtnVr"".
je veu que le nombre de tentative ''c'' s'affiche dans un label,
j'ai mis
if M=x then
begin
LbRt.Caption:=IntToStr(c);
end
mais il met met une valeur du genre 12405
voila le programme.
unit Unitdevin;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, jpeg, ExtCtrls;
type
TForm1 = class(TForm)
BtnNj: TButton;
BtnLc: TButton;
BtnQuitter: TButton;
LbCm: TLabel;
EditCm: TEdit;
BtnVr: TButton;
ListR: TListBox;
Label1: TLabel;
LbRt: TLabel;
Image1: TImage;
procedure BtnNjClick(Sender: TObject);
procedure BtnLcClick(Sender: TObject);
procedure BtnQuitterClick(Sender: TObject);
procedure BtnVrClick(Sender: TObject);
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form1: TForm1;
var x:integer;
implementation
{$R *.DFM}
procedure TForm1.BtnNjClick(Sender: TObject);
var c:integer;
begin
randomize;
x:=random(100-0+1);
ListR.Items.Clear();//éfface la listbox a chaque fois que l'on recré un chiffre
LbRt.Caption:=('');
c:=0;
end;
procedure TForm1.BtnLcClick(Sender: TObject);
begin
ShowMessage('le nombre mystérieux est '+IntToStr(x));
end;
procedure TForm1.BtnQuitterClick(Sender: TObject);
begin
if(messageDlg('voulez-vous vraiment quitter le jeu?',mtconfirmation,[mbYes,mbNo],0)=mrYes)then
close;
end;
procedure TForm1.BtnVrClick(Sender: TObject);
var m,NbrLignes,i,c:integer;
var ligne:string;
var trouve:boolean;
begin
M:=StrToInt(EditCm.Text);
c:=c+1;
begin;
if (M<0)or(M>100)then
begin
ShowMessage('le chiffre mystérieux est compris entre 0 et 100');
end;
if M=x then
begin
LbRt.Caption:=IntToStr(c);
end
else
if M>x then
begin
ligne:=''+EditCm.Text+''+ ' est trop grand';
NbrLignes:=ListR.Items.Count;
Trouve:=False;
for i:=0 to(NbrLignes-1)do
begin
if(Ligne=ListR.Items[i])Then
Trouve:=True
end;
if(trouve=False)then
ListR.Items.Add(Ligne);
end
else
begin
ligne:=''+EditCm.Text+''+ ' est trop petit';
ListR.Items.Add(ligne);
end;
EditCm.Text:='';//pour éffacer le edite
end;
end;
end.
que dois faire pour résoudre ce problème??merci.