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 :

TObjectList et sort()


Sujet :

Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Points : 8
    Points
    8
    Par défaut TObjectList et sort()
    Bonjour,

    Je suis une débutante sur delphi et mon TObjectList me donne du fil à retordre.

    lorsque j'appele MaListe.sort(@MaMethode), on me repond bien gentillement:

    [Erreur] Fichier.pas(181): Types incompatibles : 'TListSortCompare' et 'Pointer'

    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
    procedure TFichier.ExtraitCas1;
    function CompareSeriesCase(Item1,Item2: pointer): Integer;
    begin
     
      if (TSerieCase(Item1).uneCase.ligne>TSerieCase(Item2).uneCase.ligne) then
      Result:=1
      else
      if (TSerieCase(Item1).uneCase.ligne<TSerieCase(Item2).uneCase.ligne) then
      Result:=-1
      else
      if (TSerieCase(Item1).uneCase.colonne>TSerieCase(Item2).uneCase.colonne) then
      Result:=1
      else
      if (TSerieCase(Item1).uneCase.colonne<TSerieCase(Item2).uneCase.colonne) then
      Result:=-1
      else Result:=0;
     
    end;
    Var
       chem    : String;
     
    Begin
     
      chem:='C:\Documents and Settings\.....\Mes documents\Developpement\Fichiers\Donnees.txt';
     
      series.Sort(@CompareSeriesCase);
    Pour ma methode qui appele le sort

    et pour l'entete
    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
     
    unit Fichier;
     
    interface
     
    uses CaseTab, Serie, Contnrs, Dialogs, SysUtils, Classes;
     
     
     
    type
    {**
    type de fichier standard, pour la gestion
    **}
      TFichier = class
      public
        nomF : string;         ///nom de la structure du fichier
        cheminF : string ;     ///chemin du fichier utilisé
        nomExcel : string ;    ///nom de la feuille excel
        typeF: integer;        ///type (extention) du fichier  (1:xls, 2:csv, 3:txt, 4:tab)
        structF:integer;       ///structure du fichier
        caseLibelle: TCase;    /// case pour verification du fichier
        series : TObjectList;  /// liste des serie du fichier
        periodicite:integer;   /// periodicité des série du fichier
        function AjoutSerie(uneSerie: TSerie): integer;
        procedure Parametrage(nomFichier : string; cheminFichier: string; nomFeuilleExcel: string; typeExtentionFichier: integer; typeStructureFichier: integer; periodFichier:integer);
        constructor Create;overload;
        constructor Create(fich:TFichier); overload;
        procedure Affiche;
        procedure AfficheListe;
        procedure ExtraitDonnees;
        procedure ExtraitCas1;
     
    end;
    Quelqu'un aurais une idée??

    j'ai essayé plusieurs methodes dites dans des forums et des tuto mais ca me resiste...

  2. #2
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Bonjour,


    Je ne sais pas du tout si ce que je vais te dire fonctionne mais essaye tout simplement sans mettre le @ dans le .Sort
    "La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !" et malheureusement c'est souvent le cas en Développement...

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    hé non ça ne marche pas la même erreur quand je fait compare:=@MaMethode;

    en tout cas merci de la rapidité de la réponse

  4. #4
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Je viens de mettre à jour : en gros fais ç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
    procedure TFichier.ExtraitCas1;
    function CompareSeriesCase(Item1,Item2: pointer): Integer;
    begin
     
      if (TSerieCase(Item1).uneCase.ligne>TSerieCase(Item2).uneCase.ligne) then
      Result:=1
      else
      if (TSerieCase(Item1).uneCase.ligne<TSerieCase(Item2).uneCase.ligne) then
      Result:=-1
      else
      if (TSerieCase(Item1).uneCase.colonne>TSerieCase(Item2).uneCase.colonne) then
      Result:=1
      else
      if (TSerieCase(Item1).uneCase.colonne<TSerieCase(Item2).uneCase.colonne) then
      Result:=-1
      else Result:=0;
     
    end;
    Var
       chem    : String;
     
    Begin
     
      chem:='C:\Documents and Settings\.....\Mes documents\Developpement\Fichiers\Donnees.txt';
     
      series.Sort(CompareSeriesCase);
    Tout simplement en fait (regarde la dernière ligne)
    "La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !" et malheureusement c'est souvent le cas en Développement...

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    21
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 21
    Points : 8
    Points
    8
    Par défaut
    ok merci.
    j'ai du en plus sortir ma fonction de ma methode.

    j'avais utilisé cette solution a un moment et ça n'avait pas fonctionné. Entre temps j'ai fait des modifs, et je ne suis pas revenu dessus.

    Mais ça fonctionne merci beaucoup...

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

Discussions similaires

  1. Utilisation de Sort d'un Objet TObjectList
    Par ero-sennin dans le forum Delphi
    Réponses: 7
    Dernier message: 19/04/2007, 13h11
  2. StringGrid sort
    Par clovis dans le forum C++Builder
    Réponses: 4
    Dernier message: 20/10/2004, 21h46
  3. xsl:sort
    Par Pierre63 dans le forum XMLRAD
    Réponses: 2
    Dernier message: 03/07/2003, 12h37
  4. Propriété tableau et TObjectList
    Par Mouss26 dans le forum Langage
    Réponses: 3
    Dernier message: 07/03/2003, 14h32
  5. JBuilder 7 personnal sort à chaque save
    Par Hannouz dans le forum JBuilder
    Réponses: 4
    Dernier message: 17/12/2002, 22h53

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