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

C++Builder Discussion :

tri StringGrid chaine de caractère


Sujet :

C++Builder

  1. #1
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Billets dans le blog
    5
    Par défaut tri StringGrid chaine de caractère
    Bonjour,
    Après de nombreuses recherches, je n'ai pas trouvé de solution pour pouvoir trier un StringGrid. rempli de chaine de caractère.
    J'aimerai pouvoir avoir une fonction un peut comme sous Excel qui me permet en fonction de la colonne choisi pouvoir trier l'ensemble du tableau.
    J'arrive à le faire avec des nombres, mais impossible avec des chaines de caractères...

    Quelqu'un connait'il une solution qui pourrais me permettrai de faire une fonction de ce type?

    Merci par avance
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

  2. #2
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Essaye la fonction AnsiCompare

  3. #3
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Billets dans le blog
    5
    Par défaut
    Voici le code que j'ai commencé à créer!

    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
    int Debut = 1; //pour décalage du aux entetes
    int Colonne = StringGrid->ColCount-1;
    AnsiString S;
     
    for (int i = Debut;i < StringGrid->RowCount-1;i++)//parcours des lignes
     {
      for (int j = (i+1); j < StringGrid->RowCount;j++)//parcours des lignes (sauf la première)
      {
       if (StringGrid->Cells[Colonne][i].AnsiCompare(StringGrid->Cells[Colonne][i] & StringGrid->Cells[Colonne][j])<0)//si la valeur courante est supérieur à la valeur suivante
       {
        S = StringGrid->Rows[i]->Text;//on conserve la ligne
        StringGrid->Rows[i]->Text = StringGrid->Rows[j]->Text;//la ligne courante prend la valeur de la ligne suivante
        StringGrid->Rows[j]->Text = S;//on réaffecte la ligne où il faut
       }
      }
     }
    Mais cela ne modifie en rien mon Tableau...
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

  4. #4
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Pour moi ça devrait plutôt être ceci mais je n'ai pas essayé :

    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
    int Debut = 1; //pour décalage du aux entetes
    int Colonne = StringGrid->ColCount-1;
    AnsiString S;
     
    for (int i = Debut;i < StringGrid->RowCount-1;i++)//parcours des lignes
     {
      for (int j = (i+1); j < StringGrid->RowCount;j++)//parcours des lignes (sauf la première)
      {
       if (StringGrid->Cells[Colonne][i].AnsiCompare(StringGrid->Cells[Colonne][j])<0)//si la valeur courante est supérieur à la valeur suivante
       {
        S = StringGrid->Rows[i]->Text;//on conserve la ligne
        StringGrid->Rows[i]->Text = StringGrid->Rows[j]->Text;//la ligne courante prend la valeur de la ligne suivante
        StringGrid->Rows[j]->Text = S;//on réaffecte la ligne où il faut
       }
      }
     }
    De plus la tu fait un tri sur la dernière colonne, je sais pas si c'est bien sur cette colonne que tu veut trier

  5. #5
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Billets dans le blog
    5
    Par défaut
    félicitation!!
    Merci je ferais une fonction qui permet de choisir le sens du tri... et je la mettrai en ligne pour ceux qui on besoin.

    Merci encore
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

  6. #6
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Billets dans le blog
    5
    Par défaut
    comme promis voici les deux fonctions de tri, dans les deux sens de A à Z et de Z à A...

    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
    void __fastcall TForm_Tab_Clients::TrierlacolonneAZ1Click(TObject *Sender)
    {
    int Fin = StringGrid->RowCount;; //pour décalage du aux entetes
    int Colonne = StringGrid->Selection.Left;
    AnsiString S;
     
    for (int i = Fin;i > 1;i--)//parcours des lignes
     {
      for (int j = (i-1); j > 0 ;j--)//parcours des lignes (sauf la première)
      {
       if (StringGrid->Cells[Colonne][i].AnsiCompare(StringGrid->Cells[Colonne][j])<0)//si la valeur courante est supérieur à la valeur suivante
       {
        S = StringGrid->Rows[i]->Text;//on conserve la ligne
        StringGrid->Rows[i]->Text = StringGrid->Rows[j]->Text;//la ligne courante prend la valeur de la ligne suivante
        StringGrid->Rows[j]->Text = S;//on réaffecte la ligne où il faut
       }
      }
     }
    Aff_Num_Ligne();
    }
     
     
    void __fastcall TForm_Tab_Clients::TrierlacolonneZAClick(TObject *Sender)
    {
    int Debut = 1; //pour décalage du aux entetes
    int Colonne = StringGrid->Selection.Left;
    AnsiString S;
     
    for (int i = Debut;i < StringGrid->RowCount-1;i++)//parcours des lignes
     {
      for (int j = (i+1); j < StringGrid->RowCount;j++)//parcours des lignes (sauf la première)
      {
       if (StringGrid->Cells[Colonne][i].AnsiCompare(StringGrid->Cells[Colonne][j])<0)//si la valeur courante est supérieur à la valeur suivante
       {
        S = StringGrid->Rows[i]->Text;//on conserve la ligne
        StringGrid->Rows[i]->Text = StringGrid->Rows[j]->Text;//la ligne courante prend la valeur de la ligne suivante
        StringGrid->Rows[j]->Text = S;//on réaffecte la ligne où il faut
       }
      }
     }
     Aff_Num_Ligne();
    }
    La fonction Aff_Num_Ligne(); ne sert qu'à réactualisé les numéros de ligne...
    Bon courage à tous!
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

  7. #7
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Billets dans le blog
    5
    Par défaut


    je me permet de faire remonter cette discution par ce que j'ai un petit problème.
    Lors de mon tri de AàZ je pert ma dernière ligne de mon tableau et j'en ai une vide qui se créée en haut de tableau...
    Je ne comprend pas pourquoi...

    re voici le code utilisé :
    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
    void __fastcall TForm_Tab_Clients::TrierdeAZ1Click(TObject *Sender)
    {
    int Fin = StringGrid->RowCount; //pour décalage du aux entetes
    int Colonne = StringGrid->Selection.Left;
    AnsiString S;
     
    for (int i = Fin;i > 1;i--)//parcours des lignes
     {
      for (int j = (i-1); j > 0 ;j--)//parcours des lignes (sauf la première)
      {
       if (StringGrid->Cells[Colonne][i].AnsiCompare(StringGrid->Cells[Colonne][j])<0)//si la valeur courante est supérieur à la valeur suivante
       {
        S = StringGrid->Rows[i]->Text;//on conserve la ligne
        StringGrid->Rows[i]->Text = StringGrid->Rows[j]->Text;//la ligne courante prend la valeur de la ligne suivante
        StringGrid->Rows[j]->Text = S;//on réaffecte la ligne où il faut
       }
      }
     }
    Aff_Num_Ligne();
    }
    Merci par avance
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

  8. #8
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Billets dans le blog
    5
    Par défaut
    quelqu'un aurait il déjà fait une fonction de tri pour un StringGrid?
    Je vous avoue que je ne comprend vraiment pas pourquoi cette ligne devient vide. Pour information c'est la dernière ligne de mon tableau qui est remplacée par une ligne vide!

    Merci par avance
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

  9. #9
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Salut,
    as tu essayé de débuger avec des points d'arrêt et de voir ce qui se passe ?

  10. #10
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Billets dans le blog
    5
    Par défaut
    J'ai trouvé l'origine du problème :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    for (int j = (i-1); j > 1 ;j--)//parcours des lignes (sauf la première)
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

  11. #11
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Billets dans le blog
    5
    Par défaut
    erreur de ma part, le problème n'est toujours pas résolu!!!

    si quelqu'un à une idée je suis preneur par ce que ça commence à me souler de tourner en rond!

    merci par avance
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

  12. #12
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Billets dans le blog
    5
    Par défaut
    je commence à trouver mon problème de plus en plus complexe!!
    En effet je constate que mon algorithme fonctionne très bien!
    Je me permet de dire cela par ce que si je charge une deuxième fois le même fichier, et que je demande à nouveau un tri, celui-ci fonctionne!

    Je suis perdu je ne comprend pas d'ou vient le problème, je suis vraiment très embêté!!
    Quelqu'un aurai t il une suggestion à me faire?
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

  13. #13
    Expert confirmé
    Avatar de ludojojo
    Homme Profil pro
    Développeur SharePoint
    Inscrit en
    Avril 2008
    Messages
    2 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations professionnelles :
    Activité : Développeur SharePoint
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 967
    Billets dans le blog
    5
    Par défaut
    oui j'ai essayer de débeuger mais sans résultat! je peut vous fournir mon projet si ça peut être utile! je vous avoue que si je pouvais trouver la source de ce pb avant demain cela m'arrangerais bcp!!!!
    Aide les autres...
    Et les autres t'aideront....
    Mon site DVP
    N'oubliez pas de consulter les FAQ SharePoint et les cours et tutoriels SharePoint

    N'oubliez pas de voter pour les messages dont la réponse est pertinente

  14. #14
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    Citation Envoyé par ludojojo Voir le message
    je peut vous fournir mon projet si ça peut être utile!
    Cela peut être une solution si tu arrive à l'envoyer

Discussions similaires

  1. Programme de tri de chaine de caractères
    Par vetchang dans le forum Langage
    Réponses: 1
    Dernier message: 27/05/2008, 17h26
  2. Tri de chaine de caractère avec fgets
    Par clampin dans le forum Débuter
    Réponses: 4
    Dernier message: 16/05/2008, 22h42
  3. Comparaisons et tri des chaines de caractère.
    Par liliemmy dans le forum SQL
    Réponses: 2
    Dernier message: 01/04/2008, 17h52
  4. code de filtre et tri des chaines de caractères
    Par fatenatwork dans le forum Collection et Stream
    Réponses: 18
    Dernier message: 12/03/2008, 16h31
  5. Réponses: 17
    Dernier message: 16/12/2005, 09h45

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