emirej
Messages postés90Date d'inscriptionmercredi 14 mars 2007StatutMembreDernière intervention31 mai 2009
-
2 sept. 2008 à 22:22
emirej
Messages postés90Date d'inscriptionmercredi 14 mars 2007StatutMembreDernière intervention31 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;
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 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.