IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Delphi Discussion :

Probleme avec boucle While true do. Plutot bizzare


Sujet :

Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 43
    Points : 27
    Points
    27
    Par défaut Probleme avec boucle While true do. Plutot bizzare
    Bonjour a tous...
    Voila, ca fait bout de temps que je programme en delphi, et je pensait pas bloquer sur une boucle enfin bon...
    Le truc, c'est que j'ai une boucle comme ca :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    While true do
    begin
    Integer := integer +1;
    if integer > 10 then break;
    end;
    Donc, en theorie, Integer ne devrait pas pouvoir etre plus grand que 10.
    Et pourtant parfois il me sort des truc delirant comme integer := 156621

    Ce qui fait que je suis bien embeté :
    Voici le code de la boucle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    MyIII := 1;
    Ouinon:=non;
     
      while true do
      begin
         TEMP3:= '';
         TEMP3 := donnecequisuis_multi(url,requestreferer,'bxx'+IntToStr(MyIII),'</span>', 1,'<',ouinon);
         ouinon := 'oui';//Ensuite on telecharge plus la page, on utilise le cache
         if length(TEMP3) > 10 then  nbrTOUTEflotte := MyIII  ;;
         if length(TEMP3) > 10 then MyIII := MyIII+1;
         if length(temp3) < 10 then break;
         if MyIII > MaxSimultaneousAttak then break;
      end;
    ICi, Donnecequisuis_multi() retourne le texte compris dans la page URL comprit entre 'bxx'+IntToStr(MyIII) et <\span>.
    Si ce texte est plus long que 10 alors (C'est a dire qu'il existe , ce qu'il n'est pas la cas si bxx ou <\span> ne sont pas trouvé) alors on fait myIII+1
    Si MyIII depasse un certain nombre alors on ferme.

    Voila.

    Merci a tous !

  2. #2
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 854
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 854
    Points : 11 287
    Points
    11 287
    Billets dans le blog
    6
    Par défaut
    et si Length(Temp3)=10 ?

    à voir ci-dessous ; sinon, vérifie ce que renvoie donnecequisuis_multi()

    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
    MyIII := 1;
    Ouinon:=non;
     
      while MyIII <= MaxSimultaneousAttak do
      begin
         TEMP3:= '';
         TEMP3 := donnecequisuis_multi(url,requestreferer,'bxx'+IntToStr(MyIII),'</span>', 1,'<',ouinon);
         ouinon := 'oui';//Ensuite on telecharge plus la page, on utilise le cache
         if length(TEMP3) > 10   
         then begin
           nbrTOUTEflotte := MyIII;
           Inc(MyIII);
         end
         else break;
      end;
    Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
    . Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 43
    Points : 27
    Points
    27
    Par défaut
    Bon, j'ai resolu mon probleme comme ceci:

    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
     
    MyIII := 0;
         showmessage('ok');
     
      while true do
      begin
         TEMP3:= '';
         showmessage('1');
         TEMP3 := donnecequisuis_multi(url,requestreferer,'bxx'+IntToStr(MyIII),'</span>', 1,'<',ouinon);
               showmessage('2! LONG'+inttostr(length(TEMp3))+'(str:'+temp3);
         ouinon := 'oui';//Ensuite on telecharge plus la page, on utilise le cache
         if length(TEMP3) > 10 then
         begin
         MyIII := MyIII+1;
         nbrTOUTEflotte := MyIII  ;;
         end;
         if length(temp3) < 10 then
         begin
         nbrTOUTEflotte := MyIII  ;;
         break;
         end;
         if MyIII > MaxSimultaneousAttak then break;
      end;
    Le probleme venais du faite que si lenght(TEMP3) < 10 alors nbrTOUTEflotte n'avais aucune valeur... ce qui passé dans le inttostr() donnait nimporte quoi.

    Moral: Toujour initialiser ses variables avec un bon vieux :=0 avant de les utiliser

Discussions similaires

  1. Probleme avec boucle while
    Par enamuos dans le forum Langage
    Réponses: 2
    Dernier message: 29/12/2014, 22h43
  2. Probleme avec boucle while
    Par Slash54000 dans le forum Débuter
    Réponses: 7
    Dernier message: 22/12/2008, 09h01
  3. [MySQL] Probleme UPDATE avec boucle WHILE
    Par iverson_mac dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 06/06/2007, 17h07
  4. Problème avec un while...
    Par pcdj dans le forum Linux
    Réponses: 7
    Dernier message: 17/10/2005, 22h24
  5. [Debutant/WinAPI] Souci avec boucle While et GetMessage()
    Par SnowStyle dans le forum Windows
    Réponses: 11
    Dernier message: 15/10/2005, 19h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo