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 :

comment sortir d'une boucle qui dure trop?


Sujet :

Delphi

  1. #1
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 50
    Points : 44
    Points
    44
    Par défaut comment sortir d'une boucle qui dure trop?
    bonsoir, et bonne année a tous!

    voilà mon petit soucis
    je traite actuellement une gros lots de fichiers

    environ 1000 fichiers avec chacune +-200 lignes

    cette boucle fait des calculs et ça prend du temps

    comme je suis en test une fois que la boucle est lancée comment l’interrompre facilement?? (pour pouvoir debugger)

    actuellement je vais avec le gestionnaire windows et je casse le processus, il n'y aurais un moyen plus subtil??
    j'ai placé " Application.ProcessMessages;" dans la boucle qui m donne acces a windows mais pas pour l’arrêter

    autre chose, dans le temps avec turbo pascal pour debugger mes prog je plaçais dans des endroit stratégique des test qui lançait une opération interdite je divisait un nombre par zero, du coup ca plantait là et quand je le voulait et je pouvait verifier les variables concernées... ca ne marche plus! la division par zero ne provoque plus de plantage??

    merci de vos lumières!

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 430
    Points
    28 430
    Par défaut
    impressionnant

    tu connais les points d'arrêt ?

    Ctrl+F2 pour stopper le programme en cours.
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Expert éminent
    Avatar de Lung
    Profil pro
    Analyste-programmeur
    Inscrit en
    Mai 2002
    Messages
    2 664
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Analyste-programmeur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2002
    Messages : 2 664
    Points : 6 961
    Points
    6 961
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    tu connais les points d'arrêt ?
    Et les points d'arrêt conditionnels (très pratique sur les grosses boucles).
    L'urgent est fait, l'impossible est en cours, pour les miracles prévoir un délai. ___ Écrivez dans un français correct !!

    C++Builder 5 - Delphi 6#2 Entreprise - Delphi 2007 Entreprise - Delphi 2010 Architecte - Delphi XE Entreprise - Delphi XE7 Entreprise - Delphi 10 Entreprise - Delphi 10.3.2 Entreprise - Delphi 10.4.2 Entreprise - Delphi 11.1 Entreprise
    OpenGL 2.1 - Oracle 10g - Paradox - Interbase (XE) - PostgreSQL (15.4)

  4. #4
    Modérateur

    Homme Profil pro
    Ingénieur retraité
    Inscrit en
    Octobre 2005
    Messages
    2 396
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur retraité

    Informations forums :
    Inscription : Octobre 2005
    Messages : 2 396
    Points : 3 263
    Points
    3 263
    Par défaut
    Bonjour,

    Autre possibilité :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function  ToucheCla(t : integer) : boolean; // Appui Touche
    //        utilisations : if ToucheCla(VK_CONTROL) then EXIT;
    //                       if ToucheCla(Ord('R')) then EXIT;
    begin     Result:= ((GetAsyncKeyState(t) and 32768)<> 0)
    end;
    A+.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  5. #5
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 50
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par Paul TOTH Voir le message
    impressionnant

    tu connais les points d'arrêt ?

    Ctrl+F2 pour stopper le programme en cours.
    Ctrl+F2 NE MARCHE PAS!!!!

    pourquoi tand d'ironie??

  6. #6
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 42
    Points : 33
    Points
    33
    Par défaut
    Je dis peut être une bêtise mais CTRL+F2 c'est pour réinitialiser le programme, ça risque de compliquer de faire du débug si tout retourne à 0 ...

  7. #7
    Membre chevronné

    Profil pro
    Inscrit en
    Août 2005
    Messages
    1 011
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2005
    Messages : 1 011
    Points : 2 078
    Points
    2 078
    Par défaut Sotir d'une boucle longue
    Bonjour
    Moi je rajoute simplement une case a cocher que je reste dns la boucle
    if caseACocherStop.checked then exit;
    Bien sur il faut application.processmessages dans la boucle
    Apres mise au point je supprme la case a cocher ou je la rend invisible.

  8. #8
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 50
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par Gilbert Geyer Voir le message
    Bonjour,

    Autre possibilité :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function  ToucheCla(t : integer) : boolean; // Appui Touche
    //        utilisations : if ToucheCla(VK_CONTROL) then EXIT;
    //                       if ToucheCla(Ord('R')) then EXIT;
    begin     Result:= ((GetAsyncKeyState(t) and 32768)<> 0)
    end;
    A+.


    Impeccable!! ça marche!!!

    merci!

  9. #9
    Membre du Club
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Novembre 2012
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Aude (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2012
    Messages : 50
    Points : 44
    Points
    44
    Par défaut
    Citation Envoyé par gaby277 Voir le message
    Bonjour
    Moi je rajoute simplement une case a cocher que je reste dns la boucle
    if caseACocherStop.checked then exit;
    Bien sur il faut application.processmessages dans la boucle
    Apres mise au point je supprme la case a cocher ou je la rend invisible.

    merci de l'idée!!
    j'essayerais

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.3] Comment sortir d'une boucle for en PHP ?
    Par beegees dans le forum Langage
    Réponses: 2
    Dernier message: 28/12/2009, 20h36
  2. comment sortir d'une boucle while d'un Iterator
    Par solawe dans le forum Langage
    Réponses: 6
    Dernier message: 18/03/2008, 13h46
  3. [VBSCRIPT] Faire une boucle qui dure quelques secondes
    Par M4tthieu dans le forum VBScript
    Réponses: 6
    Dernier message: 03/07/2007, 13h49
  4. Gérer une action qui dure trop longtemps
    Par galicleo dans le forum VB.NET
    Réponses: 3
    Dernier message: 19/01/2007, 16h35

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