Bonjour

J'essaie (non sans peine) de créer un petit prog tout simple qui trouve le ppcm (plus petit commun multiple) de 2 nombres. Voici la procédure lors du clic sur le boutton qui lance l'analyse (désolé si mon code fait bondir les experts, mais je débute) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
procedure TForm1.BtnPpcmClick(Sender: TObject);
Var//variables locales
Nombre1  : Integer;//stock le nombre de gauche
Nombre2  : Integer;//stock le nombre de droite
Compteur : Integer;//stock le multiplicateur
 
begin//début procédure
BtnReset.Enabled := True;//active le boutton reset
Nombre1          := StrToInt (EdtNombre1.Text);//prend la valeur de l'edit gauche
Nombre2          := StrToInt (EdtNombre2.Text);//prend la valeur de l'edit droit
Compteur         := 0;//initialise le multiplicateur à 0
 
If ((Nombre1 > 0) And (Nombre2 > 0))//test des valeurs saisies
Then Begin
      While (MNombre1.Lines <> MNombre2.Lines) Do//tant que le ppcm n'est pas trouvé
      Begin
      Inc(Compteur);//incrémente le compteur de 1
      MNombre1.Lines.Add(IntToStr(Compteur)+ ' ' + 'x' +' ' + IntToStr(Nombre1) + ' ' +'=' + ' '  +IntToStr(Nombre1 * Compteur));
      MNombre2.Lines.Add(IntToStr(Compteur)+ ' ' + 'x' +' ' + IntToStr(Nombre2) + ' ' +'=' + ' '  +IntToStr(Nombre2 * Compteur));
      Windows.Beep(1500,1)//féquence, durée 
      End;//fin while
     End
Else Begin
     ShowMessage ('valeurs incorrectes');;
     End;//fin du test de valeurs saisies
 
end;//fin procédure
Voici l'allure sans prétentions de mon programme (comme vous le voyez c'est simplissime, mais déjà assez difficil pour moi )


Je suis confronté à deux soucis :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
If ((Nombre1 > 0) And (Nombre2 > 0))
Ce test vérifie donc si les valeurs saisies dans l'edit de gauche et dans celui de droite sont supérieurs à 0. Je voudrais plutôt tester si les valeurs saisies sont des Integer. J'avais pensé à une astuce du genre :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
If ((Nombre1 In[0..9]) And (Nombre2 In[0..9]))
Mais je ne peut pas dépasser 9 et si je met une lettre ou un chiffre à virgule j'ai un message d'erreur générique et non pas le showmessage que j'ai céer pour informer l'utilisateur que les valeurs saisies sont incorrectes...

Le 2ème soucis est d'ordre logique :

Comment puis-je tester lorsque le ppcm est trouvé (lorsque le nombre1 et le nombre2 sont égaux, indépendament du moment où c'est le cas) ?
Mon test actuel est le suivant mais donne évidamment un while infinit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
While (MNombre1.Lines <> MNombre2.Lines) Do
Cette boucle est infinie car l'égalité n'existe jamais au même moment lorsqu'il s'agit de 2 nombres différents...

D'avance merci pour votre patience et vos explications "claires et concises"