Boucle qui s'auto appelle

Résolu
Utilisateur anonyme - 19 avril 2006 à 18:56
 Utilisateur anonyme - 20 avril 2006 à 21:05
Salut,



Ma source est la suivante :



function TForm1.Detection : boolean ;

begin

.........................................

...........................................

if result=false then

begin

Detection;

end

else

edit1.Text:='Détecté'';

end;



procedure TForm1.Button1Click(Sender: TObject);

begin

Detection;

end;



Vous l'avez compris si on clique sur le bouton la fonction Detection
est appelée indéfiniment tant que le résultat n'est pas true.



Evidemment ca plante la mentablement.



PS : je ne veux pas utiliser de Timer dans la mesure ou je travaille en mode console



Merci à vous

5 réponses

JulioDelphi Messages postés 2226 Date d'inscription dimanche 5 octobre 2003 Statut Membre Dernière intervention 18 novembre 2010 14
19 avril 2006 à 19:09
Function TForm1.Detection : boolean;
Begin
Result := False;
Application.ProcessMessages;
While Not Result Do
Detection;
Result := true;
Edit1.Text := 'Détecté';
end;

comme ça de tete sans delphi sous la main, mais euh, la fonction : boolean est ici inutile, non ? ^^
3
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
20 avril 2006 à 15:04
zut j'oubliais, en mode console c'est un peu comme quand on reviens en turbo pascal ...

donc une bonne vieille boucle :

repeat
.. code ..
until ExitBool;

ferat parfaitement l'affaire!

soit :

var
ExitBool : boolean = false;

procedure ExitProc;
begin
Repeat
.. code .. ExitBool := true ou false selon parametre

// l'appuis sur la touche Echape force le passage a true
ExitBool := (Windows.GetAsyncKeyState(Windows.VK_ESCAPE) < 0);
until ExitBool;
end;

begin
.. code
ExitProc;
.. code
end.
3
Utilisateur anonyme
19 avril 2006 à 19:45
Salut JulioDelphi



Oui la fonction boolean est inutile c'est vrai



Meci A+
0
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
20 avril 2006 à 14:59
PS : je ne veux pas utiliser de Timer dans la mesure ou je travaille en mode console

alors vous allez m'expliquer clairement comment, EN MODE CONSOLE, vous pouvez avoir :

procedure TForm1.Button1Click(Sender: TObject);
begin
Detection;
end;


Function TForm1.Detection : boolean;
Begin
Result := False;
Application.ProcessMessages;
While Not Result Do
Detection;
Result : = true;
Edit1.Text := 'Détecté';
end;
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Utilisateur anonyme
20 avril 2006 à 21:05
Mdr Foxi : evidemment pas de bouton en mode console lol. En fait c'est
parce que je ne faisais pas le teste en mode console evidemment.





J'aurais du le préciser autant pour moi



A+
0
Rejoignez-nous