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 :

boucle for avec condition


Sujet :

Delphi

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 21
    Points : 21
    Points
    21
    Par défaut boucle for avec condition
    Bonjour,
    Cela parait simple mais je n'arrive pas à m'en sortir avec
    cette logique
    Je veux dire décendre toutes les lignes de stringgrid si la condition n'est pas remplie jusqu'à qu'elle
    le soit à nouveau :
    Les variables indicées nom, codepostal, ville sont enregistrées dans un fichier x
    La variable indicée nomsup est dans un fichier y.
    Par comparaison, si nom est différent de nomsup j'aimerais que nom + codepostal + ville descendent d'une
    ligne dans stringgrid

    exemple :
    si nom[n] = nomsup[n] alors écrit les variables codepostal + ville sur la ligne correspondante de la stringgrid
    si nom[n] <> nomsup[n] alors la ligne correspondante :=''et descend d'une ligne nom +code postal +ville
    si nom[n] = nomsup[n] alors écrit les variables codepostal + ville sur la ligne correspondante de la stringgrid
    si nom[n] = nomsup[n] alors écrit les variables codepostal + ville sur la ligne correspondante de la stringgrid
    si nom[n] <> nomsup[n] alors la ligne correspondante :=''et descend d'une ligne nom + code postal +ville
    etc ...

    Mon code :
    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
    Stringgrid1.RowCount:= PosPosition1; // integer
    for n:= 1 to PosPosition1-1 do begin
    if indexCotisFNI[n].PositionFNI= IndexPosition1[n].Position1
      then begin
          stringgrid1.Cells[0,n]:= IndexPosition1[n].Position1;
          stringgrid1.Cells[1,n]:= inttostr(IndexPosition1[n].FNI);
          stringgrid1.Cells[2,n]:= indexCotisFNI[n].ReglesFNI;
          stringgrid1.Cells[3,n]:= indexCotisFNI[n].ResteFNI;
          stringgrid1.Cells[5,n]:= indexCotisFNI[n].MontantFNI;
          end
          else begin // si différent de IndexPosition1[n].Position1
          stringgrid1.Cells[0,n]:= IndexPosition1[n].Position1;
          stringgrid1.Cells[1,n]:=   inttostr(IndexPosition1[n].FNI);       stringgrid1.Cells[2,n+1]:=indexCotisFNI[n].ReglesFNI;
          stringgrid1.Cells[3,n+1]:= ndexCotisFNI[n].ResteFNI;
          stringgrid1.Cells[5,n+1]:= indexCotisFNI[n].MontantFNI;
          end;
      end;
    Merci d'avance

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    343
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2003
    Messages : 343
    Points : 392
    Points
    392
    Par défaut
    J'ai pas compris , mais est-ce que ça ne ressemble pas à un parcours récursif dans un arbre? Sinon il te faut travailler sur une autre liste (une deuxieme liste) que tu rempliras "au fil de l'eau" jusqu'à que ta condition de fin soit atteinte.

  3. #3
    Membre émérite Avatar de edam
    Homme Profil pro
    Développeur Delphi/c++/Omnis
    Inscrit en
    Décembre 2003
    Messages
    1 894
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Développeur Delphi/c++/Omnis
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Décembre 2003
    Messages : 1 894
    Points : 2 771
    Points
    2 771
    Par défaut
    + tatareau
    fait dans la tete que la stringgrid n'est là que pour affiché une résultat prés, ni plus

  4. #4
    Membre à l'essai
    Inscrit en
    Septembre 2006
    Messages
    19
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 19
    Points : 11
    Points
    11
    Par défaut
    Bonjour

    Ton problème est que quand tu écris sur la ligne (sans descendre), tu écrases la ligne précédente si elle est écrite en dessous. (j'espère juste avoir bien compris ton problème )
    Alors, pour tout descendre, il faut ajouter un offset que tu incrémentes :

    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
    var offset:integer;
    ...
    begin
    ...
    offset := 0;
    for n:=1 to PosPosition-1 do
    begin
      // Tu effectue un décalage général si le 
      // test l'exige
      if (.... <> .... ) then // tu remets ton test
         Offset := Offset + 1;
     
      // Ici tu écris tout normalement à la ligne [n+offset]
      StringGrid1[0, n+offset] := TesDonnees[n];
      ...
    end;
    Si j'ai bien compris ton problème de décalage, cela devrais résoudre ton problème.

    A+
    Basteo

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 69
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 21
    Points : 21
    Points
    21
    Par défaut Magdani
    Je vais essayer ton code, en attendant merci beaucoup pour ta réponse

Discussions similaires

  1. Boucle For avec condition sur doublons
    Par nyto35 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 26/04/2013, 11h04
  2. [XL-2003] boucle For avec multiple conditions d'arret
    Par yvespi dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 26/05/2010, 09h30
  3. Réponses: 2
    Dernier message: 14/04/2010, 18h39
  4. Pb boucle [FOR] avec condition [IF]
    Par Newenda dans le forum MATLAB
    Réponses: 2
    Dernier message: 03/02/2010, 11h50
  5. Aide boucle for avec condition
    Par guigui33 dans le forum Images
    Réponses: 1
    Dernier message: 06/03/2008, 20h59

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