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 :

Tri d'un tableau contenant des heures;


Sujet :

Delphi

  1. #1
    Membre régulier Avatar de Bourak
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2005
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 231
    Points : 84
    Points
    84
    Par défaut Tri d'un tableau contenant des heures;
    Salut tous les developpeures

    J'ai un tableau tabseance contenant des heures non trie ;
    La problème que j'ai tester tous les methodes pour la trier mais pas de solution.
    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
     
     
    //tabseances est declaré comme variable globale 
    tabseances : array[0..24] of string ;
    // il sera rempli par des heures non trie (08:00:00),(10:00:00), (09:00:00).....ect
     
    /// Ma solution est ceci mais elle ne fonctionne pas bien
     
    procedure Tfrmjour.Button1Click(Sender: TObject);
    var t,f,t1,f1 :string;
    i,j :integer;
    ht,hf : ttime;
    tabtemp : array[0..24] of string ;//tableau contenant les heures trie
     
    begin
     
    for i:= 0 to 24 do begin
      for j:=0 to 24 do begin
        t:= tabseances[i];
        f:= tabseances[j];
     
          if ((t <> '')and(f <> '')) then
          begin
     
             ht := strtotime(t);
             hf := strtotime(f);
             if (hf < ht)  then  
               tabtemp[i] :=f
            else
             if  (hf >= ht)    then
               tabtemp[i] :=t ;
         end;
     
      end;
    end;
    end;
    Merci d'avance

  2. #2
    Candidat au Club
    Inscrit en
    Juillet 2006
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Juillet 2006
    Messages : 2
    Points : 2
    Points
    2
    Par défaut tu peux le faire avec un TstringList
    tu peux utiliser la propriété SORTED d'un TStringList.
    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
    procedure TForm1.Button1Click(Sender: TObject);
    var
    i :integer;
    TempString : TStringList ;
    begin
    tabseances[0] := '08:00:00' ; // Pour les tests
    tabseances[1] := '10:00:00' ; // Pour les tests
    tabseances[2] := '09:00:00' ; // Pour les tests
    TempString := TStringList.create ;
    TempString.clear ;
    TempString.sorted := True ;
    Memo1.Clear ;
    for i:= 0 to 24 do Memo1.text := Memo1.text + 'Avant : ' + tabseances[i] + #13#10 ; // Affiche le tableau du départ
    for i:= 0 to 24 do if tabseances[i] <> '' then TempString.Add(tabseances[i]); // on recupere les enreg
    for i:= 0 to TempString.Count - 1  do tabseances[i] := TempString.Strings[i]; // on sauvegarde le resultat trié
    for i:= 0 to 24 do Memo1.text := Memo1.text + 'Aprés : ' + tabseances[i] + #13#10 ; // affiche le résultat trié
    TempString.free ; // on libere la mémoire
    end;

  3. #3
    Membre confirmé
    Avatar de OutOfRange
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    533
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 533
    Points : 474
    Points
    474
    Par défaut
    Salut

    Il me semble effectivement que ton code ne peut pas aboutir au bon résultat, car à aucun moment tu ne compares la nouvelle valeur à classer avec celles qui le sont déjà (tabtemp[i])

    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
    for i:= 0 to 24 do begin
     t:= tabseances[i];
      for j:=0 to 24 do begin
    
        f:= tabtemp[j];
    
          if ((t <> '')and(f <> '')) then
          begin
           
             ht := strtotime(t);
             hf := strtotime(f);
             if (hf > ht)  then  
               tabtemp[i] :=t
            else
             if  (hf <= ht)    then
               tabtemp[i] :=t ;
         end;
    
      end;
    end;
    end;
    Je n'ai pas testé, c'est juste une piste de réflexion...
    Et mon code ne peut pas fonctionner, il faudrait d'abord initialiser tous les tabtemp à '00:00:00'...

  4. #4
    Membre régulier Avatar de Bourak
    Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2005
    Messages
    231
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 231
    Points : 84
    Points
    84
    Par défaut
    Merci à tous pour votre aide

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

Discussions similaires

  1. Tri sur plusieurs champs d'un tableau contenant des objets
    Par swampsnake dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 01/07/2011, 13h14
  2. [POO] Tri d'un tableau contenant des objets
    Par shadypierre dans le forum Langage
    Réponses: 4
    Dernier message: 26/02/2009, 20h49
  3. [Tableaux] Tri de tableau contenant des objets
    Par erehcab dans le forum Langage
    Réponses: 10
    Dernier message: 07/10/2008, 19h22
  4. Tableau contenant des Vecteurs Template ?
    Par ExSter dans le forum Langage
    Réponses: 4
    Dernier message: 21/02/2007, 11h41
  5. Réponses: 18
    Dernier message: 28/04/2006, 11h00

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