Generer une ligne de texte

Résolu
emirej Messages postés 90 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 31 mai 2009 - 2 sept. 2008 à 22:22
emirej Messages postés 90 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 31 mai 2009 - 3 sept. 2008 à 18:24
Voila enfaite j'ai placé un Edit et un Button et enfaite j'ai plusieurs lignes de texte et j'aimerais qu'on faite qu'a chaque fois que je clique il m'affiche le texte puis quand je rappuie sur le même boutton il m'affiche une phrase au hasard je vais vous montrer en gros

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit3.Text:='Bonjour c'est moi';
Edit3.Text:=' Je m'apelle .... "
( Mais quand je fait comme ca apres avoir affiché le Bonjour c'est moi , je rappuie une fois pour qu'il affiche l'autre texte mais cela ne fait rien , comment puis-je faire ? ^^' )
end;

end.

Merci

4 réponses

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
3 sept. 2008 à 05:03
const
  SentencesCountMax = 8;

  Sentences : array[0..TACountMax-1] of string = (
    'Bonjour!',
    'Salut!',
    'Coucou!',
    'Salutation!',
    'Hi!',
    'Hello',
    '''Lut!',
    'Yo!'
  );
   

var
  CurrentSentence : integer = 0;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Edit3.Text := Sentences[CurrentSentence];
  CurrentSentence := (CurrentSentence+1) mod SentencesCountMax;
end;


<hr size="2" width="100%" />
3
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
3 sept. 2008 à 09:58
oops :

Sentences : array[0..<strike>TACountMax</strike>-1] of string =

Sentences : array[0..SentencesCountMax-1] of string =

<hr size="2" width="100%" />
3
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
3 sept. 2008 à 10:28
const
  SentencesCountMax = 8;
  { Nombre maximum de ligne de texte
  }

  Sentences : array[0..SentencesCountMax-1] of string = (
  { tableau allant de 0 a SentencesCountMax-1     soit 8-1 7 et 7 + 0 8 elements
    pas convaincus ? 0 1 2 3 4 5 6 7 = 8 elements :)    de 1 a 8 8 et de 0 a 7 8, simple non ?
  }
    'Bonjour!',
    'Salut!',
    'Coucou!',
    'Salutation!',
    'Hi!',
    'Hello',
    '''Lut!',
    'Yo!'
  );
   

var
  CurrentSentence : integer = 0;
  { compteur qui est incrementé a chaque clique sur button1
  }

procedure TForm1.Button1Click(Sender: TObject);
begin
  { on affiche la ligne
    0 la premiere fois, puis 1 puis 2 etc...
  }
  Edit3.Text := Sentences[CurrentSentence];

  CurrentSentence := (CurrentSentence+1) mod SentencesCountMax;
  { incrementation +1 a chaque iteration
    MOD (modulo) permet de faire un index rotatif, MOD retourne le reste
    d'une division entiere.
    (4 div 2)= 2 ; reste= (4 mod 2)= 0 ; 4/2= 2
    (5 div 3)= 1 ; reste= (5 mod 3)= 2 ; 5/3= 1.6666666666666666666x
    (9 div 4)= 2 ; reste= (9 mod 4)= 1 ; 9/4= 2.25
    (1 div 8)= 0 ; reste= (1 mod 8)= 1 ; 1/8= 0.125
    (7 div 5)= 1 ; reste= (7 mod 5)= 2 ; 7/5= 1.4
   
    exemple :
    (0 + 1) mod 8 = 1
    (1 + 1) mod 8 = 2
    (2 + 1) mod 8 = 3
    (3 + 1) mod 8 = 4
    (4 + 1) mod 8 = 5
    (5 + 1) mod 8 = 6
    (6 + 1) mod 8 = 7
    (7 + 1) mod 8 = 0


    (0 + 1) mod 8 = 1 ... etc



    it's mathémagique!
    le truc c'est que ça marche même si on continue au dela de 8 :



     (7 + 1) mod 8 0 (7+1 8 ; 8 = multiple de 8 (8x1))



     (8 + 1) mod 8 = 1



     (9 + 1) mod 8 = 2



    (10 + 1) mod 8 = 3



    (11 + 1) mod 8 = 4



    (12 + 1) mod 8 = 5



    (13 + 1) mod 8 = 6



    (14 + 1) mod 8 = 7



    (15 + 1) mod 8 0 (15+1 16 ; 16 = multiple de 8 (8x2))



    (16 + 1) mod 8 = 1
    ...    (23 + 1) mod 8 0 (23+1 24 ; 24 = multiple de 8 (8x3))
    ...    (31 + 1) mod 8 0 (31+1 32 ; 32 = multiple de 8 (8x4))

    donc chaque multiple de 8 retournera 0
    40, 48, 56, 64, 72, 80, 88, 96, 104 etc.
    et chaque chiffres suivant (41,42,43 etc) renverons respectivement
    la suite 1,2,3,4,5,6,7
    d'ou le nom "index rotatif" puisque malgré l'incrementation
    on repete toujours la même suite de nombres.



  }
end;






<hr size="2" width="100%" />
3
emirej Messages postés 90 Date d'inscription mercredi 14 mars 2007 Statut Membre Dernière intervention 31 mai 2009
3 sept. 2008 à 18:24
Super merci !
0
Rejoignez-nous