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 :

affichage de toutes les étapes de la boucle


Sujet :

Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Décembre 2006
    Messages
    52
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 52
    Par défaut affichage de toutes les étapes de la boucle
    on a une procédure qui contient une boucle, on veut voir la progression de l'exécution de cette boucle alors comment faire?

  2. #2
    Membre émérite Avatar de PadawanDuDelphi
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Août 2006
    Messages
    678
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur de jeux vidéo
    Secteur : Bâtiment

    Informations forums :
    Inscription : Août 2006
    Messages : 678
    Par défaut
    Salut,

    Tu souhaite faire quoi au juste? Parceque là ça manque un peu de précisions.

    1) Si tu souhaite visualiser l'avancement de ton traitement, utilise une TProgressBar.

    2) Si c'est juste pour débugger, tu peux le faire pas à pas ou mettre des
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ShowMessage(inttostr(TaVariableDeBoucle));
    au milieu de ta boucle pour voir ou tu en es.

    3) C'est ni l'un ni l'autre et on en revient au manque de précision...
    A+.

  3. #3
    Membre éprouvé
    Inscrit en
    Août 2002
    Messages
    144
    Détails du profil
    Informations personnelles :
    Âge : 49

    Informations forums :
    Inscription : Août 2002
    Messages : 144
    Par défaut
    Bonjour, si tu veux voir l'avancement d'un boucle dans un label, tu peux faire ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure ChargeFichier;
    var
     NbFichier : integer;
    begin
     NbFichier := 50000;
     For i:=1 to NbFichier do
     begin
      Label1.Caption := 'Copie du fichier ' + IntToStr(i) + ' sur ' + IntToStr(NbFichier);
      Application.ProcessMessage;
     end;
    end;
    Ce code, n'est qu'un exemple, je ne sais pas si cela correspond à ton besoin.

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 118
    Par défaut
    Pour du Debug
    tu peux aussi utiliser OutputDebugString et voir les messages dans le journal d'évènement de Delphi

    Pour du Client
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ProgressBar.Position := 0;
    ProgressBar.Max := Count;
    ProgressBar.Step := 1;
    for i := 0 to Count - 1 do
    begin
      ...
      ProgressBar.StepIt();
      ...
    end;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    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
    Par défaut
    "voir la progression de l'exécution d'une boucle" :
    - avec ShowMessage() : c'est la galère : faut appuyer sur OK for i:=1 to N !!! ... et noter les messages sur un papier pour s'en souvenir !
    - avec Label1.Caption : si le tour de boucle est rapide le message est illisible et s'il est lisible on n'a pas le temps de le noter qu'il change déjà,
    - avec ProgressBar : c'est tout juste bon pour faire patienter l'utilisateur en le rassurant que ça avance, lentement, mais ça avance,
    - voir les messages dans le journal d'évènements de Delphi : connais pas, je viens de découvrir.

    Pour ma part j'utilise en phase de mise au point un RichEdit et je truffe ma boucle avec des richedit1.lines.add(info) où info est la chaîne de ce qui m'intéresse à chaque étape ... et en fin de boucle on peut voir ou récupérer le texte du RichEdit et même l'imprimer avec RichEdit.print ... (raison pour laquelle je n'utilise que rarement un tMemo où Memo.print n'existe pas).
    Si la présence permanente en avant plan du RichEdit est gênante rien n'empêche de le rendre invisible/visible, selon les besoins, via un click-bouton ou autre. En bref ça donne un "journal d'évènements" personnalisé.

    Reste à bien doser le nombre de richedit1.lines.add(info) car on est vite envahi par trop d'infos.
    N'oubliez pas de consulter les FAQ Delphi et les cours et tutoriels Delphi

  6. #6
    Teo
    Teo est déconnecté
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2002
    Messages
    110
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 110
    Par défaut
    Citation Envoyé par Gilbert Geyer
    "Pour ma part j'utilise en phase de mise au point un RichEdit et je truffe ma boucle avec des richedit1.lines.add(info) où info est la chaîne de ce qui m'intéresse à chaque étape
    Idem :pour moi.
    J'utilise donc un TRichEdit
    j'ai un bouton
    - Stop ==> on Sort de la boucle
    - Pause ==> on active une pause dans la boucle
    - ViderRichEdit ==> Vidage du RichEdit
    Expl
    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
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    Procedure TForm.Bt_RichEdit_ViderClick(Sender:TObject);
    Begin
      Bt_RichEdit_Vider.Tag := 1
    End;
     
    Procedure TForm.Bt_StopClick(Sender:TObject);
    Begin
      Bt_Stop.Tag := 1;
    End;
     
    Procedure TForm.Bt_PauseClick(Sender:TObject);
    Begin
      If Bt_Pause.Tag = 1
      Then Bt_Pause.Tag := 0
      Else Bt_Pause.Tag := 1;
    End;
     
    Procedure TForm.MaProcedure;
    Var
      NbBcl:Integer;
      NbBclCh:String;
    Begin
      NbBcl := 0;
      RichEdit.CLear;
      Bt_Stop.Tag = 0;
      Bt_RichEdit_Vider.Tag := 0;
      While FaireMonTruc Do
      Begin
        Inc(NbrBcl);
        NbBclCh := IntToStr(NbBcl);
     
        Application.ProcessMessages;
     
        if Bt_RichEdit_Vider.Tag = 1 
        Then Begin//Vider le RichEdit
          RichEdit.CLear;
          Bt_RichEdit_Vider.Tag := 0;
        End;
     
        RichEdit.Lines.Add('Deb Boucle N°:'+NbBclCh);
        RichEdit.Lines.Add(#9+NbBclCh+'-- Deb Proc TOTO');//Tabulation=#9
        Toto;//Procedure TOTO
        RichEdit.Lines.Add(#9+NbBclCh+'-- Fin Proc TOTO');
        .....//Traitement
        RichEdit.Lines.Add('FIN Boucle N°:'+NbBclCh);
     
        Application.ProcessMessages;
        if Bt_Stop.Tag = 1 
        Then Begin//Arret demandé
          RichEdit.Lines.Add('***** STOP DEMANDÉ PAR UTILISATEUR *****');
          Break;    
        End;
        If Bt_Pause.Tag = 1
        Then Begin//Pause demandée
          RichEdit.Lines.Add(' --- PAUSE DEMANDÉE PAR UTILISATEUR');
          While Bt_Pause.Tag = 1 Do Application.ProcessMessages;
          //Faudra re clicker sur le bouttoon Pause, pour continuer
          RichEdit.Lines.Add(' --- PAUSE TERMINÉE');
        End;
      End;//End du While FaireMonTruc Do
    End;//Procedure TForm.MaProcedure;
    Avec ce genre de truc on a une bonne vision de ce qui se trafic

Discussions similaires

  1. Affichage de toutes les pages du formulaire
    Par benoit13 dans le forum IHM
    Réponses: 13
    Dernier message: 27/07/2007, 11h57
  2. affichage de toutes les données d'une session
    Par cesoir dans le forum Langage
    Réponses: 2
    Dernier message: 23/04/2007, 12h34
  3. [Conception] Affichage de toutes les infos de la BD
    Par arti2004 dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 10/07/2006, 09h58
  4. Réponses: 2
    Dernier message: 01/11/2005, 10h03
  5. [CR.NET] affichage de toute les pages de l'état
    Par HULK dans le forum SAP Crystal Reports
    Réponses: 4
    Dernier message: 19/01/2005, 17h34

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