[Delphi] Problème dans un code / N'affiche jamais la variable

Problème dans un code / N'affiche jamais la variable [Delphi] - Delphi/Pascal - Programmation

Marsh Posté le 14-12-2007 à 23:43:25    

:hello:

 

J'ai un exo qui est un jeu : le player 1 saisit un mot caché, le player 2 doit le trouver en maxi 3 essais.

 

Mais, lors de l'execution, j'ai un souci, dans le showmessage de la ligne 21, il ne m'affiche rien. Pourtant, le texte apparait bien :heink: Donc, il y aurait un problème avec ma variable essai, mais lequel ? :??:

 

Merci pour votre aide !

 

Code :

 
Code :
  1. var
  2. essai : string[4];
  3. begin
  4. if key= VK_RETURN
  5. then if compteur <> 3
  6.      then begin
  7.           if editEssai.text = editMotATrouver.text
  8.           then begin
  9.                showmessage('Bravo, joueur 2, tu as gagné du ' + inttostr(compteur) + ' coup.');
  10.                btnNew.setfocus;
  11.                end
  12.           else begin
  13.                if editMotATrouver.text[1] <> editEssai.text[1]
  14.                then essai[1] := '-';
  15.                if editMotATrouver.text[2] <> editEssai.text[2]
  16.                then essai[2] := '-';
  17.                if editMotATrouver.text[3] <> editEssai.text[3]
  18.                then essai[3] := '-';
  19.                if editMotATrouver.text[4] <> editEssai.text[4]
  20.                then essai[4] := '-';
  21.                showmessage('Voici les bonnes et mauvaises lettres : ' + essai); // Le problème est ici
  22.                end;
  23.            compteur := compteur + 1
  24.            end
  25.      else begin
  26.      showmessage('Vous avez perdu ...');
  27.      btnNew.setfocus;
  28.      end
  29. end;


Message édité par Pad le 16-12-2007 à 11:24:04
Reply

Marsh Posté le 14-12-2007 à 23:43:25   

Reply

Marsh Posté le 16-12-2007 à 11:16:18    

La string i]essai [/i] doit être iniialisé, par exemple, juste après le begin, il devrait y avoir

essai := '    ';


Voici ce squi se passe :
 
var essai : string[4]; réserve un emplacement de plusieurs octets. Le premier octet contient la longueur de la chaine (je ne sais pas si c'est 4 ou 0 à ce moment-là). Le deuxième octet, le vrai début de la chaine, contient un caractère nul, 0 en binaire.
 
essai[2] := '-'; met un tiret dans le troisième octet, sans changer le deuxième octet qui reste à nul.
 
showmessage(essai) affiche le contenu de la variable essai en s'arrêtant quand la longueur de la chaine est atteinte ou quand un zéro binaire est rencontré. Donc l'affichage s'arrête avant d'avoir atteint le tiret.

Reply

Marsh Posté le 16-12-2007 à 11:25:03    

:hello:
 
Il me semblait avoir essayé, mais bon, je modifierais cet aprem quand je serais chez moi ;)
 
Merci !

Reply

Marsh Posté le 16-12-2007 à 16:11:28    

Même en initialisant, ça n'affiche rien :/

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed